снимок памяти для процесса на mac? - PullRequest
3 голосов
/ 23 августа 2011

Я хочу сделать снимок памяти процесса в действии на Mac. Я понятия не имею, как это сделать.

У меня есть IDA-PRO для Mac со мной. Можно ли это использовать? Как?

Может кто-нибудь предложить мне способ сделать это? (некоторая документация или пример). Может быть, можно использовать некоторые приемы из универа, но я тоже об этом не знаю.

Я не хочу завершать процесс, так как хочу видеть, что меняется после выполнения инструкций / команд.

1 Ответ

4 голосов
/ 23 августа 2011

Вы можете отправить сигнал запущенному процессу, чтобы сбросить ядро ​​в файл, который позже можно будет использовать с 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 $@ $<
...