Сброс ядра в gdb на OSX (без gcore или generate-core-file)

Я использую gdb на OSX, в котором, похоже, нет ни команд gcore, ни generate-core-file:

$ gdb
GNU gdb 6.3.50-20050815 (Apple version gdb-1705) (Fri Jul  1 10:50:06 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".
(gdb) gcore
Undefined command: "gcore".  Try "help".
(gdb) generate-core-file
Undefined command: "generate-core-file".  Try "help".
(gdb)

Учитывая это, как я могу создать дамп ядра или что-то похожее на него через GDB?

(Я подозреваю, что могу использовать dump memory, но для этого требуется диапазон адресов, и я изо всех сил пытаюсь найти правильный вызов info, чтобы получить правильный диапазон памяти...)


person Kristian Glass    schedule 30.04.2012    source источник


Ответы (2)


Запустите lldb --attach-pid, затем используйте команду process save-core, чтобы сохранить ядро. Обратите внимание, что процесс будет приостановлен сразу после того, как вы присоединитесь к нему, поэтому будьте осторожны, если это важный процесс.

$ lldb --attach-pid <pid>
(lldb) process attach --pid 76669
Process 76669 stopped
Executable module set to "/bin/bash".
Architecture set to: x86_64h-apple-macosx.
(lldb) process save-core "core"
mach_header: 0xfeedfacf 0x01000007 0x00000008 0x00000004 0x00000030 0x00000e08 0x00000000 0x00000000
...
Saving data for segment at 0x7fd455200000
...
person andrewdotn    schedule 20.11.2014
comment
Могу ли я сделать это, чтобы получить дамп памяти процесса? Как? Это не работает. -bash: lldb: command not found - person Nicolas Barbulesco; 28.05.2016
comment
@NicolasBarbulesco Попробуйте xcode-select --install установить инструменты разработчика - person andrewdotn; 29.05.2016
comment
@NicolasBarbulesco Вы используете последнюю версию Mac OS = 10.11.5? В этой версии xcode-select устанавливается по умолчанию. - person andrewdotn; 29.05.2016
comment
У меня Mac OS X 10.6.8. - person Nicolas Barbulesco; 08.06.2016

См. Как создать ядро файл для аварийного приложения в XCode + gdb?

Кроме того, возможно, более новый gdb имеет gcore, который работает на MacOS. Я не знаю, но вы можете поискать и узнать.

person Tom Tromey    schedule 18.07.2013