Подтвердить что ты не робот

Как создать дамп ядра, даже если процесс работает нормально?

В Linux при сбое процесса создается дамп ядра.

Тем не менее, я хочу создать дамп ядра, когда процесс не сбой, но выглядит багги. Для удаленного эксперта нужен основной дамп для анализа.

В Windows мы можем создать файл дампа процесса через диспетчер задач, после чего процесс все еще выполняется.

Возможно ли это в Linux?

4b9b3361

Ответ 1

Вызвать gdb, затем

attach pid
gcore

где pid - это идентификатор процесса рассматриваемого процесса.

Ответ 2

Вы можете использовать утилиту gcore прямо из командной строки:

gcore [-o filename] pid

Кстати, если вы хотите увидеть только трассировку стека процесса, утилита gstack выполнит задание.

Обе утилиты поставляются с gdb.

Ответ 3

Вы можете сделать это в своем коде с помощью:

if (fork() == 0) abort();

Ответ 4

Если вы хотите сделать это программно, попробуйте использовать google-coredumper. Их пример:

#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
 * but we didn't crash.
 */