Valgrind 是个开源的工具,功能很多。
- Memcheck是一个内存错误检测器。它有助于使你的程序,尤其是那些用C和C++写的程序,更加准确。
- Cachegrind是一个缓存和分支预测分析器。它有助于使你的程序运行更快,分析CPU的cache命中率、丢失率,用于进行代码优化。。
- Callgrind是一个调用图缓存生成分析器。它与Cachegrind的功能有重叠,但也收集Cachegrind不收集的一些信息,检测程序代码的运行时间和调用过程,以及分析程序性能。
- Helgrind是一个线程错误检测器。它有助于使你的多线程程序更加准确,用于检查多线程程序的竞态条件。
- DRD也是一个线程错误检测器。它和Helgrind相似,但使用不同的分析技术,所以可能找到不同的问题。
- Massif是一个堆分析器。它有助于使你的程序使用更少的内存。
- DHAT是另一种不同的堆分析器。它有助于理解块的生命期、块的使用和布局的低效等问题。
- SGcheck是一个实验工具,用来检测堆和全局数组的溢出。它的功能和Memcheck互补:SGcheck找到Memcheck无法找到的问题,反之亦然。
- BBV是个实验性质的SimPoint基本块矢量生成器。它对于进行计算机架构的研究和开发很有用处
memcheck
valgrind --tool=memcheck --leak-check=full --show-reachable=yes --log-file=$LOGPATH/$toolname.memcheck.log ./$toolname -t 10 < $valgrind_pack >
https://www.oschina.net/translate/valgrind-memcheck?cmp
massif
堆栈分析器,它能测量程序在堆栈中使用了多少内存,告诉我们堆块,堆管理块和栈的大小。
valgrind --tool=massif --stacks=yes ./visionary_ec_tool -t 10 < ~/libtest/mcpack_lib/pack.100 > massif.o1 2> massif.o2 &
ms_print massif.out.*** >massif.log
valgrind --tool=massif --threshold=0.1 --max-snapshots=1000 ./visionary_ec_tool -t 25
callgrind
valgrind --tool=callgrind ./memleak
callgrind_annotate callgrind.out.23603 >callgrind.log
来源:oschina
链接:https://my.oschina.net/u/347414/blog/1942042