【发布时间】:2019-02-21 16:44:01
【问题描述】:
我意识到某些 Address Sanitizer 功能可能因 GCC 和 clang 而异;我的兴趣主要是 GCC(目前使用 GCC 6.2 和 7.3)
我可以使用ASAN_OPTIONS 设置halt_on_error=0 在报告缺陷后继续运行,或者将其设置为 1 以在报告第一个缺陷后立即停止。
我正在寻找的是一种在 N 个缺陷后停止的方法。 halt_on_error=N 不起作用,因为它只是一个二进制设置(开/关)。
有没有其他方法可以做到这一点:
- 当简单地在命令行运行 exe 时,通过一些环境设置?
- 在调试器内部时 - 例如类似
b some_asan_defect_reporting_function if (asan_defect_count == N)
提前感谢您提供上述任何信息。
戈登
【问题讨论】:
-
顺便说一句,我意识到我可以通过添加 __asan_on_error() 的实现来实现这一点,该实现计算它被调用的次数等;不过在这样做之前,我只是想检查一下该功能是否已经在消毒剂的某个地方实现了。
-
halt_on_error=N- 我的印象是N这里的意思是 unique 错误的数量。 -
不幸的是:setenv ASAN_OPTIONS "halt_on_error=2" ; a.out 错误:bool 选项的值无效:'2' 错误:标志解析失败。