valgrind是一个开源的内存管理框架,valgrind是用于构建动态分析工具的探测框架,它包括一个工具集,每个工具执行某种类型的调试,分析或类似的任务。valgrind的框架是模块化的,所以很容易的创建新的工具而不会影响原有的框架。
许多有用的工具被作为标准而提供。
- Memcheck是一个内存错误检测器。它有助于使你的程序,尤其是那些用C和C++写的程序,更加准确。
- Cachegrind是一个缓存和分支预测分析器。它有助于使你的程序运行更快。
- Callgrind是一个调用图缓存生成分析器。它与Cachegrind的功能有重叠,但也收集Cachegrind不收集的一些信息。
- Helgrind是一个线程错误检测器。它有助于使你的多线程程序更加准确。
- DRD也是一个线程错误检测器。它和Helgrind相似,但使用不同的分析技术,所以可能找到不同的问题。
- Massif是一个堆分析器。它有助于使你的程序使用更少的内存。
- DHAT是另一种不同的堆分析器。它有助于理解块的生命期、块的使用和布局的低效等问题。
- SGcheck是一个实验工具,用来检测堆和全局数组的溢出。它的功能和Memcheck互补:SGcheck找到Memcheck无法找到的问题,反之亦然。
- BBV是个实验性质的SimPoint基本块矢量生成器。它对于进行计算机架构的研究和开发很有用处。
内存检测:
valgrind --tool=memcheck --leak-check=full ./test;
如果要检测调用信息,则使用valgrind --tool=callcheck ./test,别的工具使用方法类似。