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

xml*_*lmx 19 c linux debugging coredump remote-debugging

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

但是,我希望在进程没有崩溃时创建核心转储,但看起来有问题.远程专家需要核心转储进行分析.

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

在Linux下有可能吗?

Win*_*ute 21

gdb然后打电话

attach pid
gcore
Run Code Online (Sandbox Code Playgroud)

哪个pid是相关流程的进程ID.


Evg*_*uev 17

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

gcore [-o filename] pid
Run Code Online (Sandbox Code Playgroud)

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

两个公用事业都有gdb.


Mar*_*ian 14

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

if (fork() == 0) abort();
Run Code Online (Sandbox Code Playgroud)

  • 这可能不是最好的解决方案,但男孩是聪明的:) (5认同)

dus*_*uff 9

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

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