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

如何让AddressSanitizer检测内存泄漏时不修改退出状态$?

解决AddressSanitizer内存泄漏导致退出状态异常的问题

你可以通过以下几种方式实现忽略内存泄漏导致的退出状态变更,同时按需保留内存泄漏的检测报告:

方法1:仅修改泄漏检测的退出码(保留泄漏报告)

设置环境变量 ASAN_OPTIONS=exitcode=0,让AddressSanitizer在仅检测到内存泄漏时返回0的退出状态,而遇到其他真正的运行时错误(如内存越界、使用已释放内存)时仍返回非0状态。

运行示例:

ASAN_OPTIONS=exitcode=0 ./leak

执行后,你仍会看到内存泄漏的详细报告,但执行 echo $? 会输出0,符合测试用例本身执行成功的判断逻辑。

方法2:完全关闭内存泄漏检测

如果你不需要内存泄漏的检测报告,可以直接关闭泄漏检测功能,设置环境变量 ASAN_OPTIONS=detect_leaks=0:

运行示例:

ASAN_OPTIONS=detect_leaks=0 ./leak

此时程序不会输出任何内存泄漏相关内容,退出状态完全由程序本身的返回值决定。

补充说明

  • 这两个选项均为运行时环境变量,无需修改原有的编译命令。
  • 如果需要同时设置多个ASan选项,可用冒号分隔,例如:ASAN_OPTIONS=exitcode=0:verbosity=1 ./leak

内容的提问来源于stack exchange,提问作者Pooran Chandra Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:05:54