我想在我的C++应用程序中的特定位置强制内核转储.
我知道我可以这样做:
int * crash = NULL;
*crash = 1;
但我想知道有没有更干净的方法?
顺便说一下,我正在使用Linux.
我想在我的C++应用程序中的特定位置强制内核转储.
我知道我可以这样做:
int * crash = NULL;
*crash = 1;
但我想知道有没有更干净的方法?
顺便说一下,我正在使用Linux.
提高信号号6(Linux中为SIGABRT
)是一种方法(但请记住,在所有POSIX实现中,SIGABRT不是required,所以如果这不是快速脏调试代码,您可能希望使用SIGABRT
本身).
#include <signal.h>
: : :
raise (SIGABRT);
调用abort()
也会导致核心转储,您甚至可以通过在子进程中先调用fork()
,然后调用abort()
来终止进程,详细信息请参见this answer.