0

在某些应用程序的开发过程中,我们需要在不完全停止程序执行的情况下获得完整的核心转储。

当然,在某些情况下会产生核心转储,在这些情况下可能无法安全地继续,但我们不是在谈论内存损坏等。

我要做的是向程序发送一个信号并生成一个完整的内核,而不会或最小地影响程序执行

这可能吗?如果有怎么办?

4

2 回答 2

3

请参阅此 Google 库,它可能会有所帮助:http ://code.google.com/p/google-coredumper/

coredumper 库可以编译到应用程序中以创建正在运行的程序的核心转储——无需终止。

于 2012-11-21T19:10:59.137 回答
0

Coredumpber适用于 Linux,如果那是您的操作系统,显然是个好主意。

对于其他类似 Posix 的系统,这样的事情应该可以正常工作:

#include <stdlib.h>
#include <process.h>

// Fork and abort for a core dump. This process keeps running.
if (fork() == 0) abort();

当然环境必须设置为 dump core on SIGABRT。你也可以试试raise(SIGTERM),就是这样kill -9

于 2012-11-21T20:40:15.363 回答