嵌入式开发调试利器 | Sanitizer检测器
内容提要
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不能同时使用,需单独检测。
-
在程序中同时存在多种风险时,需使用多个检测器单独检测,选择合适的检测器进行分析。
延伸问答
Sanitizer是什么?
Sanitizer是由Google发起的开源工具集,用于检测内存泄露等问题。
Sanitizer包含哪些工具?
Sanitizer包括AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等工具。
如何使用AddressSanitizer进行内存检测?
使用AddressSanitizer时,编译时需加参数 -fsanitize=address。
ThreadSanitizer能检测哪些问题?
ThreadSanitizer用于检测数据竞争、死锁等线程相关问题。
AddressSanitizer和ThreadSanitizer可以同时使用吗?
AddressSanitizer和ThreadSanitizer不能同时使用,需单独检测。
如果程序中同时存在多种风险,应该如何检测?
需要使用多个检测器单独挨个检测,选择合适的检测器进行分析。