c++ - 使用 SIGSEGV 或 SIGABRT 信号转储核心并终止进程

标签 c++ c posix

我的流程的当前实现,

如果过程中出现逻辑错误,它会通过故意访问无效内存区域来愚弄核心并退出。 (发送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/

相关文章:

c - 如何从标准输入读取-1 字符?

c - 如何在当前语言环境下使用 strerror_l?

c - 如何打开临时文件并获取其文件名?

c++ - 转移 boost::asio::socket 堆栈变量的所有权

c++ - 变量未在此范围内声明

c++ - boost asio 类似信号量的解决方案

c++ - 段错误和 RAII

C++ Eigen 库 - 二次规划、固定与动态、性能

c - 在 MacOS X 中安装 valgrind

c++ - Webkit GTK : Using the DOM Tree Walker