AddressSanitizer&ThreadSanitizer原理与应用
2015年1月11日 阅读(7,679)
序
AddressSanitizer&ThreadSanitizer都是最初由Google开发的,用于运行时检测C/C++程序中的内存错误和多线程data race的,俗话说“Google出品,必属精品”。首先它们都非常新,最近几年才出来的,有很多先进的地方,弥补了现有一些工具的很多不足,代表了先进生产力的发展方向。比如它们都采用了CTI(CompileTime Instrumentation)技术,即在编译时进行代码插入,运行速度快,比传统的Valgrind等工具速度上要快一个数量级。它们的输出信息都非常详细,方便快速地定位问题。AddressSanitizer除了可以发现堆上内存越界外,还可以检查到栈及全局变量的越界访问,这是很多内存检查工具无法做到的。