测试时如何主动触发Segment Fault?g++12下原方法失效求助
Segmentation Fault捕获机制的测试问题与解决方案
我编写了一段Segment Fault捕获代码,用于处理操作系统发送的SIGSEGV信号,避免程序直接崩溃,至少能在退出前完成日志写入。为测试该机制,我基于Google Test框架编写了单元测试,在g++-9/g++-10环境下运行完全正常,但升级到g++-12后,原本用于触发Segment Fault的测试代码失效,无法产生段错误,导致单元测试无法完成。推测这是g++-11或g++-12新增了防护机制以规避未定义行为(UB),但我确实需要能主动触发Segment Fault的代码。
原触发代码如下:
void doSegFault() { int* pi = nullptr; std::cout << pi[0] << std::endl; };
更新:用户user12002570提供了可行的解决方案:
#include <signal.h> raise(SIGSEGV);
感谢user12002570!
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

