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

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

但是,我想创build一个核心转储过程不会崩溃,但看起来越野车。 远程专家需要核心转储来分析。

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

在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. */