使用SIGSEGV或SIGABRT信号转储核心并终止进程
Dumping a core and terminating a process using SIGSEGV or SIGABRT signals
我的流程的当前实现
如果进程中出现逻辑错误,它将使内核变哑,并通过故意访问无效内存区域而退出。(发送SIGSEGV信号)
char* pzCoreMsg = "Logic Error";
char* zTmp = NULL;
strcpy(zTmp, pzCoreMsg);
的其他可能实现
1) 调用raise(SIGABRT)
函数也是一种可能的解决方案。(发送SIGABRT信号)
2) 也可以调用abort()
函数(发送SIGABRT信号)
可能还有更多的解决方案。我想知道让核心静音并终止进程
不依赖未定义的行为,只需调用abort()
即可。默认情况下,它将引发SIGABRT并转储core。abort()
还将取消阻止SIGABRT,如果信号被忽略(或者如果信号处理程序返回),它将恢复默认处理并再次引发它。真的没有必要做任何进一步的事情。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在c++中初始化矩阵时出现分段错误(核心转储)
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- MPI突然停止了对多个核心的操作
- 在多个核心中处理一个HTTP请求
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- llvm构建器向基本块添加终止符
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 引发异常实例后调用的终止,核心转储
- 使用SIGSEGV或SIGABRT信号转储核心并终止进程
- 已终止(转储核心)
- 在抛出"std::invalid_argument"的实例后终止调用 what(): dataItem 已在树中 中止(核心转储)
- 终止(核心转储)c++ Cygwin