即使进程正常运行,如何创建核心转储? [复制]
Posted
技术标签:
【中文标题】即使进程正常运行,如何创建核心转储? [复制]【英文标题】:How to create a core dump even if the process is normally running? [duplicate] 【发布时间】:2015-02-19 14:15:49 【问题描述】:在 Linux 下,当进程崩溃时,会创建核心转储。
但是,当进程没有崩溃但看起来有问题时,我想创建一个核心转储。远程专家需要核心转储来分析。
在Windows下,我们可以通过任务管理器创建一个进程的dump文件,之后该进程还在运行。
Linux下可以吗?
【问题讨论】:
【参考方案1】:您可以直接从命令行使用gcore 实用程序:
gcore [-o filename] pid
顺便说一句,如果您只想查看进程的堆栈跟踪,gstack
实用程序将完成这项工作。
这两个实用程序都带有gdb
。
【讨论】:
【参考方案2】:您可以在您的代码中使用:
if (fork() == 0) abort();
【讨论】:
这可能不是最好的解决方案,但男孩很聪明:)【参考方案3】:如果您想以编程方式执行此操作,请尝试使用 google-coredumper。他们的例子:
#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
* but we didn't crash.
*/
【讨论】:
【参考方案4】:拨打gdb
,然后
attach pid
gcore
其中pid
是相关进程的进程ID。
【讨论】:
以上是关于即使进程正常运行,如何创建核心转储? [复制]的主要内容,如果未能解决你的问题,请参考以下文章