C/C++性能测试工具---Valgrind

一、valgrind memcheck--内存错误检测器

可以检测下列与内存相关的问题:

  • 未释放内存的使用
  • 对释放后内存的读/写
  • 对已分配内存块尾部的读/写
  • 内存泄露
  • 不匹配的使用malloc/new/new[] 和 free/delete/delete[]
  • 重复释放内存

 valgrind --tool=memcheck  ./a.out

二、 valgrind massif--堆分析器

监视程序内存分配。若是在运行程序中发现占用内存较多,想要知道使用内存较多的代码行,可以使用valgrind的massif工具

Massif是一个内存剖析工具。通过不断的取程序堆的快照来达到监视程序内存分配的目的。

valgrind --tool=massif ./a.out

 会生成一个massif文件,可以使用ms_print来解析这个输出文件

ms_print massif.out.32682(进程pid)

三、valgrind cachegrind--缓存和分支预测分析器

valgrind --tool=cachegrind ./a.out 

指令运行结果: 打印摘要信息

除打印信息外,还会将更详细的信息写入cachegrind.out.pid

扫描二维码关注公众号,回复: 5016717 查看本文章

cg_annotate cachegrind.out.pid

 四、valgrind callgrind--调用图缓存生成分析器

callgrind使用cachegrind的统计信息Ir(I cache reads, 即一条指令执行的次数)来统计程序中函数的调用情况,建立函数调用关系图,在运行结束后,会把结果写入callgrind.out.pid文件中

valgrind --tool=callgrind --separate-threads=yes ./a.out

 --separate-threads=yes 表示要查看多线程相关数据

这条指令会在当前目录下生成一个callgrind.out.pid文件

1. 查看文件

callgrind_annotate callgrind.out.pid

 结果示例  会给出Ir  文件:函数

2. 注解源文件

callgrind_annotate callgrind.out.pid XX.c

 会将XX.c的每一行代码调用次数标清楚

猜你喜欢

转载自blog.csdn.net/weixin_42670653/article/details/82349635