Tag: macos

gdb可以使函数指针指向另一个位置吗?

我会解释一下: 假设我有兴趣替换某个应用程序使用的rand()函数。 所以我将gdb附加到此进程并使其加载我的自定义共享库(具有自定义的rand()函数): call (int) dlopen(“path_to_library/asdf.so”) 这会将自定义的rand()函数放在进程的内存中。 但是,此时符号rand仍将指向默认的rand()函数。 有没有办法让gdb将符号指向新的rand()函数,强制进程使用我的版本? 我必须说我也不允许使用LD_PRELOAD (linux)或DYLD_INSERT_LIBRARIES (mac os x)方法,因为它们只允许在程序执行开始时注入代码。 我想替换rand()的应用程序,启动几个线程,其中一些启动新进程,我有兴趣在其中一个新进程上注入代码。 正如我上面提到的,GDB非常适合这个目的,因为它允许代码注入特定的进程。

go中无法读取utmpx文件

package main import ( “os” “fmt” ) func main() { fd, err := os.Open(“/var/run/utmpx”) fmt.Println(fd, err) var data []byte len, err := fd.Read(data) fmt.Println(len, err) } &{0xc42000a240}无 0零 没有错误,也没有数据。 从系统头文件中读取此路径/var/run/utmpx 。 如何获得这条道路是另一个问题 系统:macOS el capiton,go版本go1.8 darwin / amd64 **我的最终目标是将此文件读入go struct。**此文件包含系统用户信息。 我能这样做吗? 我会继续努力……

OSX – 抓住打印作业。

我一直在做我的研究,但我找不到一种方法来捕捉用户发送到打印机的打印作业数量(或打印了多少页)。 我想要做的是由OSX用户打印的简单页面计数器。 你见过类似的东西吗? 1.-能够通过计算机中的软件计算打印作业的数量,而不是打印机。 2.-计算多少页?

如何构建包含Mac OS X入口点的C程序?

如何构建包含Mac OS X入口点的C程序? 我想建立: start() { /* exit system call */ asm(“movl $1,%eax;” “xorl %ebx,%ebx;” “int $0x80” ); } 但是当我跑步时: gcc -nostdlib min.c 我总是得到: ld: could not find entry point “start” (perhaps missing crt1.o) collect2: ld returned 1 exit status 我只是为了看它正在做什么而做的另一个尝试是: gcc -nostdlib -c min.c && otool -tV min.o 输出是: (__TEXT,__text) section _start: 0000000000000000 pushq […]

compilin错误:字段必须具有常量:android 2.3.4源代码永远不支持’结构中的可变长度数组’扩展名

嗨我在android 2.3.4源代码中尝试make libdvm时出现以下错误, external/elfutils/libebl/eblobjnote.c:43:17: error: fields must have a constant size: ‘variable length array in structure’ extension will never be supported uint32_t version[descsz / 4 – 1]; 这是我的mac os x mountain lion上gcc 4.2报告的真正的c错误。 我猜有一些与gcc 4.2和android 2.3.4源代码不兼容。 我不得不改变一些事情来使编译达到这一点。 我不知道哪个gcc版本用于编译代码,但gcc 4.2经常在代码中发现错误。 任何人都可以告诉我如何处理这些错误,或者在最糟糕的情况下我应该使用哪个gcc版本以及如何降级到mac os x中的特定版本?

从c中的串口读取会破坏线路

我正在尝试用C编写一个小程序,它将使用select命令从串口读取,以便它阻塞并等待输入。 它正在工作,除了它不断分裂线,我不知道为什么。 该设备的编程不会破坏线路,并且可以与实际的终端程序一起使用。 我之前从未在C中进行过串口通信,而且我在Mac上,所以这对我来说都是新手。 我真的不知道在哪里可以找到出错的地方。 我有一些代码可以找到并列出串口。 为了简单起见,我会把它留下来,所以如果有一个没有意义的变量,那可能就是原因。 以下是打开端口,设置属性并尝试从中读取的代码,以及来自Apple网站的复制注释(对不起): /* this is based on a combination of http://stackoverflow.com/questions/6947413/how-to-open-read-and-write-from-serial-port-in-c * and https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/WorkingWSerial/WWSerial_SerialDevs/SerialDevices.html */ static int OpenSerialPort(const char *deviceFilePath, int speed) { int fileDescriptor = -1; struct termios options; memset(&options, 0, sizeof(options)); // init it // Open the serial port read/write, with no controlling terminal, // and don’t […]

创建不可变的CFArray对象 – Apple示例不起作用

为了测试,我复制了以下示例代码[ https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFCollections/Articles/creating.html]并编译它: #import CFStringRef strs[3]; CFArrayRef anArray; strs[0] = CFSTR(“String One”); strs[1] = CFSTR(“String Two”); strs[2] = CFSTR(“String Three”); anArray = CFArrayCreate(NULL, (void *)strs, 3, &kCFTypeArrayCallBacks); 现在我得到以下错误:“没有匹配函数来调用CFArrayCreate” 为什么它不可编译以及如何实现它是可编译的?

使用Core Audio从默认线路输出声音设备中提取浮点数

我需要一些帮助/指导,使用Core Audio从声音输出设备中提取浮点数。 我已经阅读过关于从AIFF中提取浮子的类似post。 我的最终目标是: iTunes正在播放一首歌 使用Core Audio的C / C ++程序从声音设备中提取浮点值(实时) 使用生成的浮点向量对浮点数组执行傅立叶变换(可能使用Apple的Accelerate Library中的vDSP) – 这部分我有点想通了:) 注意:我正在使用Mac OS X(10.6+)进行开发。 任何帮助都感激不尽。

如何让GCC __attribute __((构造函数))在OSX下工作?

extern void MyInitFunc(void) __attribute__ ((constructor)); extern void MyTermFunc(void) __attribute__ ((destructor)); void MyInitFunc(void) { printf(“%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n”); } void MyTermFunc(void) { } 我把它放在主应用程序(不是库或框架)中的.c文件中。 根据GCC文档,它不会被调用。 我错过了重要的事吗? 这是在Snow Leopard的XCode 3.2上。

音频样本生成multithreadingOSX

这个问题是前一个问题的后续问题( 音频制作者与OSX AudioComponent消费者线程和C中的回调线程 ),包括一个测试示例,它的工作和行为符合预期,但并不能完全回答这个问题。 我已经基本上改写了这个问题,并重新编写了示例,因此它只包含普通的C代码。 (我发现前一个例子中几乎没有Objective-C部分的代码只会引起混淆,并使读者分心于问题中必不可少的内容。) 为了利用多个处理器内核以及使CoreAudio拉模型渲染线程尽可能轻量化,LPCM样本的生产者例程显然必须“坐在”不同的线程上,超出实际优先级渲染线程/回调。 它必须将样本提供给循环缓冲区(在此示例中为TPCircularBuffer ),系统将从inNumberFrames的常量中调度数据拉出。 Grand Central Dispatch API提供了一个简单的解决方案,我在一些个人研究(包括试错编码)中推断出了这个解决方案。 这个解决方案很优雅,因为它不会阻止推送和拉动模型之间的任何冲突。 然而,应该处理“子线程”的GCD 到目前为止还没有满足生产者代码的工作线程的特定并行化要求,所以我必须明确地产生一些POSIX线程,具体取决于数量逻辑核心可用。 尽管在加速计算方面结果已经非常显着,但我仍然觉得混合POSIX和GCD有点不合适。 特别是它适用于变量wait_interval ,并且正确地计算它,而不是通过预测渲染线程在下一个循环中需要多少PCM样本。 这是我的测试程序的缩写和简化(伪)代码,在plain-C中。 控制器声明: #include “TPCircularBuffer.h” #include #include #include #include #include typedef struct { TPCircularBuffer buffer; AudioComponentInstance toneUnit; Float64 sampleRate; AudioStreamBasicDescription streamFormat; Float32* f; //array of updated frequencies Float32* a; //array of updated amps Float32* prevf; //array of […]