GDB поставляется с программой под названием gcore
, которая генерирует файл ядра из запущенного процесса.
Многие системы в настоящее время отключают файлы ядра по умолчанию (ulimit -c
в оболочке будет показывать 0).Используйте команду оболочки ulimit -c unlimited
, затем запустите ваш процесс в той же оболочке (эти ограничения унаследованы от родительского процесса. Если вы запускаете свой процесс не так, как непосредственно из оболочки, вам необходимо выяснить, как их установитьнапример, LimitCORE=
в файле системного модуля).
Как только ваш процесс перейдет в плохое состояние, запустите gcore
для его идентификатора процесса.Затем вы можете скопировать его на свою рабочую станцию и загрузить в gdb (gdb <executable> <core-file>
).Затем вы можете просмотреть трассировку стека и другое состояние на момент получения дампа ядра.