如何以编程方式在C/C++中导致核心转储

我想在我的C应用程序中的特定位置强制执行核心转储.

我知道我可以做以下事情:

int * crash = NULL;
*crash = 1;

但我想知道是否有更干净的方式?

我顺便使用Linux.

解决方法:

提高6号信号(Linux中的SIGABRT)就是这样做的一种方法(尽管请记住,在所有POSIX实现中SIGABRT不需要为6,因此如果这不是快速的话,你可能想要使用SIGABRT值本身’n’dirty调试代码).

#include <signal.h>
: : :
raise (SIGABRT);

调用abort()也会导致核心转储,你甚至可以通过在子进程中调用fork()后跟abort()来终止你的进程 – 有关详细信息,请参阅this answer.

上一篇:linux-如何在centos中为守护进程生成核心转储?


下一篇:c – 监控核心转储应用程序