2014-12-21 55 views
19

在Linux下,当一个进程崩溃,核心转储将被创建。即使进程正常运行,如何创建核心转储?

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

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

在Linux下可以吗?

回答

20

呼叫gdb,然后

attach pid 
gcore 

其中pid是有问题的进程的进程ID。

9

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

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

你可以用你的代码中做到这一点:

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

这可能不是最好的解决方案,但男孩很聪明:) –

17

您可以使用正确的命令行gcore实用程序:

gcore [-o filename] pid 

顺便说一句,如果你想看的过程中唯一的堆栈跟踪,gstack工具将做的工作。

这两个实用程序都配有gdb