Ответ 1
Вызвать gdb
, затем
attach pid
gcore
где pid
- это идентификатор процесса рассматриваемого процесса.
В Linux при сбое процесса создается дамп ядра.
Тем не менее, я хочу создать дамп ядра, когда процесс не сбой, но выглядит багги. Для удаленного эксперта нужен основной дамп для анализа.
В Windows мы можем создать файл дампа процесса через диспетчер задач, после чего процесс все еще выполняется.
Возможно ли это в Linux?
Вызвать gdb
, затем
attach pid
gcore
где pid
- это идентификатор процесса рассматриваемого процесса.
Вы можете использовать утилиту gcore прямо из командной строки:
gcore [-o filename] pid
Кстати, если вы хотите увидеть только трассировку стека процесса, утилита gstack
выполнит задание.
Обе утилиты поставляются с gdb
.
Вы можете сделать это в своем коде с помощью:
if (fork() == 0) abort();
Если вы хотите сделать это программно, попробуйте использовать google-coredumper. Их пример:
#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
* but we didn't crash.
*/