【发布时间】:2021-08-23 12:14:49
【问题描述】:
Microsoft 最近将 Address Sanitizer (ASan) 引入 Microsoft Visual Studio 2019,我一直在尝试使用它。这个问题特定于 C 和 C++。我的问题是:是否有任何理由为发布版本启用 ASan,而不是只为调试版本启用它?打开 ASan 对我的程序的性能和内存使用是毁灭性的。 (CPU 性能比减半还差,内存使用量增加了两倍。)因此,我的希望是,如果我启用 ASan 只是为了检查潜在问题,并且它在 Debug 构建中没有检测到任何问题,那么我可以安全地假设发布版本中不会有任何可能被 ASan 捕获的问题?当然,我们不打算在发布/生产版本中启用 ASan?
感谢您的任何见解。
【问题讨论】:
-
Address Sanitizer 对于查找仅在启用优化时暴露的错误非常有用。考虑使用 ASan 为 Release 创建第三个构建目标。
-
@RichardCritten 绝对 - 我很久以前将我的“发布”配置拆分为“开发”和“发布”。
-
如果您有集成/系统测试套件,请使用优化的发布版本和 ASan 运行它。
标签: c++ c windows address-sanitizer msvc12