AddressSanitizer 错误继续处理

AddressSanitizer 错误继续处理

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

Visual Studio 17.6引入了新的“checked build”功能,使用Address Sanitizer运行时的C和C++。新功能名为continue_on_error(COE),可以诊断和报告隐藏的内存安全错误,且没有误报。开发人员可以通过设置环境变量来启用COE功能,并将内存安全错误流式传输到stdout、stderr或日志文件。COE功能允许应用程序在报告独特的内存安全错误的同时继续运行。编译器会对二进制文件进行仪器化,以与address sanitizer运行时配合使用,现有的测试可以用于发现隐藏的内存安全错误。COE为在Windows上发布C和C++应用程序提供了简单的通过/不通过门槛。该功能显著减少了内存安全错误,如果报告了任何隐藏错误,则不应发布。鼓励开发人员尝试该功能并提供反馈。

🎯

关键要点

  • Visual Studio 17.6引入了新的Address Sanitizer功能,名为continue_on_error(COE),用于C和C++的checked build。
  • COE功能可以诊断和报告隐藏的内存安全错误,且没有误报,允许应用程序在报告错误的同时继续运行。
  • 开发人员可以通过设置环境变量来启用COE功能,并将错误流式传输到stdout、stderr或日志文件。
  • COE功能显著减少了内存安全错误,鼓励开发人员在发布C和C++应用程序前使用该功能进行测试。
  • 默认情况下,Address Sanitizer在遇到第一个错误时终止应用程序,而COE允许在报告错误后继续执行。
  • COE功能通过编译器标志和环境变量的设置,帮助开发人员发现隐藏的内存安全错误。
  • COE的唯一性通过内部哈希函数确定,以防止重复报告相同的错误。
  • 在某些情况下,如内存分配失败或访问违规,COE无法继续执行。
  • C++内存安全错误是行业关注的重点,COE旨在为C++开发提供一个简单的发布门槛。
  • 开发者被邀请安装Visual Studio 17.6或更高版本,尝试COE功能并提供反馈。
➡️

继续阅读