我想在Mac上对进程内存进行快照。我不知道该怎么做。
我有Mac专用的IDA-PRO。可以使用吗?怎么样?
有人可以建议我这样做吗? (一些文档或示例)。
也许可以使用uni的一些技术,但我也没有意识到。
我不想终止该进程,因为我想查看执行指令/命令后发生的变化。
最佳答案
您可以向正在运行的进程发送信号,以将核心转储到文件中,以后可以与gdb一起使用以进行事后分析。
kill -ABRT <process-id>
似乎必须配置系统才能启用核心转储。有关详细信息,请参见http://developer.apple.com/library/mac/#technotes/tn2124/_index.html。
更新:
好吧,上面的链接介绍了
gcore
的第三方实现,这是一个命令行工具,用于创建正在运行的进程的核心转储:http://www.osxbook.com/book/bonus/chapter8/core/
您可能只想获取源代码并尝试:
http://www.osxbook.com/book/bonus/chapter8/core/download/gcore-1.3.tar.gz
要使单个FAT二进制文件与ppc / i386 / x86_64一起使用,只需修改Makefile中的以下几行:
gcore: gcore.c
gcc -O2 -arch ppc -arch i386 -Wall -o $@ $<
如:
gcore: gcore.c
gcc -O2 -arch ppc -arch i386 -arch x86_64 -Wall -o $@ $<