【发布时间】:2015-02-19 14:15:49
【问题描述】:
在 Linux 下,当进程崩溃时,会创建核心转储。
但是,当进程没有崩溃但看起来有问题时,我想创建一个核心转储。远程专家需要核心转储来分析。
在Windows下,我们可以通过任务管理器创建一个进程的dump文件,之后该进程还在运行。
Linux下可以吗?
【问题讨论】:
标签: c linux debugging remote-debugging coredump
在 Linux 下,当进程崩溃时,会创建核心转储。
但是,当进程没有崩溃但看起来有问题时,我想创建一个核心转储。远程专家需要核心转储来分析。
在Windows下,我们可以通过任务管理器创建一个进程的dump文件,之后该进程还在运行。
Linux下可以吗?
【问题讨论】:
标签: c linux debugging remote-debugging coredump
您可以直接从命令行使用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.
*/
【讨论】:
拨打gdb,然后
attach pid
gcore
其中pid 是相关进程的进程ID。
【讨论】: