You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试时如何主动触发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:57:03