即使进程正常运行,如何创建核心转储?

时间:2014-12-21 03:24:30

标签: c linux debugging remote-debugging coredump

在Linux下,当进程崩溃时,将创建核心转储。

但是,我想在进程没有崩溃的情况下创建核心转储,但看起来有些错误。远程专家需要核心转储进行分析。

在Windows下,我们可以通过任务管理器创建进程的转储文件,之后,该进程仍在运行。

在Linux下可以吗?

4 个答案:

答案 0 :(得分:20)

致电gdb,然后

attach pid
gcore

其中pid是相关流程的流程ID。

答案 1 :(得分:17)

您可以从命令行使用gcore实用程序:

gcore [-o filename] pid

顺便说一句,如果您只想查看流程的堆栈跟踪,gstack实用程序将完成这项工作。

这两个实用程序都附带gdb

答案 2 :(得分:14)

您可以使用以下代码在代码中执行此操作:

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

答案 3 :(得分:9)

如果您想以编程方式执行此操作,请尝试使用google-coredumper。他们的例子:

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