嵌入式开发调试利器 | 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不能同时使用,需单独检测。
-
在程序中同时存在多种风险时,需使用多个检测器单独检测,选择合适的检测器进行分析。
➡️