我的流程的当前实现,
如果过程中出现逻辑错误,它会通过故意访问无效内存区域来愚弄核心并退出。 (发送SIGSEGV信号)
char* pzCoreMsg = "Logic Error";
char* zTmp = NULL;
strcpy(zTmp, pzCoreMsg);
其他可能的实现
1) 调用raise(SIGABRT)
函数也是一种可能的解决方案。 (发送SIGABRT信号)
2) 也可以调用abort()
函数(发送SIGABRT信号)
可能存在更多的解决方案。我想了解使核心变笨并终止进程的最佳方法
最佳答案
不要依赖未定义的行为,只需调用 abort()
.默认情况下,它将引发 SIGABRT 和转储核心。 abort()
也将解除对 SIGABRT 的阻塞,如果信号被忽略(或者如果信号处理程序返回),它将恢复默认配置并再次引发。真的没有必要做任何进一步的事情。
关于c++ - 使用 SIGSEGV 或 SIGABRT 信号转储核心并终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212618/