我想在我的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.