嵌入式开发调试利器 | Sanitizer检测器

💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

Sanitizer是由Google发起的开源工具集,用于检测内存泄露等问题。它包括了AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等多种工具。这些工具最初是LLVM项目的一部分,后来也被GNU的GCC编译器支持。Sanitizer的使用例子包括捕捉栈缓冲区溢出问题和使用已释放内存问题。Sanitizer检测器不能同时使用,需要单独挨个检测。

🎯

关键要点

  • Sanitizer是由Google发起的开源工具集,用于检测内存泄露等问题。

  • Sanitizer包括AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等工具,最初是LLVM项目的一部分,后被GCC支持。

  • AddressSanitizer可以检测缓冲区溢出和使用已释放内存的问题,编译时需加参数 -fsanitize=address。

  • ThreadSanitizer用于检测数据竞争、死锁等线程相关问题,编译时需加参数 -fsanitize=thread。

  • AddressSanitizer和ThreadSanitizer不能同时使用,需单独检测。

  • 在程序中同时存在多种风险时,需使用多个检测器单独检测,选择合适的检测器进行分析。

➡️

继续阅读