Address sanitizer 地址消毒液-我可以在N个缺陷后停止吗?

Address sanitizer 地址消毒液-我可以在N个缺陷后停止吗?,address-sanitizer,Address Sanitizer,我意识到一些地址消毒器的功能可能因GCC而异;我主要对GCC感兴趣(目前使用GCC 6.2和7.3) 我可以使用ASAN_OPTIONS设置halt_on_error=0在报告缺陷后继续运行,或者将其设置为1以在报告第一个缺陷后立即停止 我所寻找的,是一种在N个缺陷之后停止的方法halt\u on\u error=N不起作用,因为它只是一个二进制设置(开/关) 是否有其他方法来实现这一点: 当简单地在命令行上运行exe时,通过一些env设置 在调试器内部时-例如,类似于b的函数如果(asan\

我意识到一些地址消毒器的功能可能因GCC而异;我主要对GCC感兴趣(目前使用GCC 6.2和7.3)

我可以使用
ASAN_OPTIONS
设置
halt_on_error=0
在报告缺陷后继续运行,或者将其设置为1以在报告第一个缺陷后立即停止

我所寻找的,是一种在N个缺陷之后停止的方法
halt\u on\u error=N不起作用,因为它只是一个二进制设置(开/关)

是否有其他方法来实现这一点:

  • 当简单地在命令行上运行exe时,通过一些env设置
  • 在调试器内部时-例如,类似于
    b的函数如果(asan\u defect\u count==N)
提前感谢您提供上述信息


Gordon

以前有一个辅助的
ASAN_OPTIONS=max_errors=N
标志,用于
halt_on_error
,但它在代码审查期间提出了太多问题,并且没有令人信服的用例,所以我中途放弃了它(您可以看到它在上被删除)。如果您觉得它可能有用,请尝试在中提交一个bug。

顺便说一句,我意识到我可以通过添加一个u asan_on_error()的实现来实现这一点,该实现计算调用它的次数等;但在执行此操作之前,我只想检查该功能是否已在消毒器中的某个位置实现。
halt\u on\u error=N
-我的印象是
N
这里表示唯一错误的数量。不幸的是,没有:setenv ASAN\u选项“halt\u on\u error=2”;a、 输出错误:布尔选项的值无效:“2”错误:标志分析失败。