c++ 内存管理

和自甴很熟 提交于 2021-02-02 05:00:50

Valgrind 是个开源的工具,功能很多。

  1. Memcheck是一个内存错误检测器。它有助于使你的程序,尤其是那些用C和C++写的程序,更加准确。
  2. Cachegrind是一个缓存和分支预测分析器。它有助于使你的程序运行更快,分析CPU的cache命中率、丢失率,用于进行代码优化。。
  3. Callgrind是一个调用图缓存生成分析器。它与Cachegrind的功能有重叠,但也收集Cachegrind不收集的一些信息,检测程序代码的运行时间和调用过程,以及分析程序性能。
  4. Helgrind是一个线程错误检测器。它有助于使你的多线程程序更加准确,用于检查多线程程序的竞态条件。
  5. DRD也是一个线程错误检测器。它和Helgrind相似,但使用不同的分析技术,所以可能找到不同的问题。
  6. Massif是一个堆分析器。它有助于使你的程序使用更少的内存。
  7. DHAT是另一种不同的堆分析器。它有助于理解块的生命期、块的使用和布局的低效等问题。
  8. SGcheck是一个实验工具,用来检测堆和全局数组的溢出。它的功能和Memcheck互补:SGcheck找到Memcheck无法找到的问题,反之亦然。
  9. 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!