从 C/C++ 程序生成内联核心转储



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

当然,有些条件会生成核心转储,其中可能无法安全地继续,但我们不是在谈论内存损坏等。

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

这可能吗? 如果是这样,怎么办?

看看这个谷歌图书馆,它可能会有所帮助: http://code.google.com/p/google-coredumper/

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

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

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

#include <stdlib.h>
#include <process.h>
// Fork and abort for a core dump. This process keeps running.
if (fork() == 0) abort();

当然,必须将环境设置为在SIGABRT上转储核心。 您也可以尝试raise(SIGTERM),就像kill -9一样。

相关内容

  • 没有找到相关文章

最新更新