【性能】Centos7.x 上运行时诊断工具 valgrind的安装和使用

一、Valgrind简介


Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。

你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。

使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。

它内部支持多个工具集,包括内存错误检测器,线程错误检测器,缓存分析器、堆分析器等,默认使用的是内存检测器(memcheck), 它是使用最多的一个内存检测工具。


源码下载:http://valgrind.org/downloads/current.html

参考文档:http://valgrind.org/docs/manual/manual.html



二、CentOS7.x上的valgrind编译安装


# yum -y install  gcc  make  automake

#  wget  https://sourceware.org/ftp/valgrind/valgrind-3.14.0.tar.bz2

# tar  -jxvf valgrind-3.14.0.tar.bz2

#  cd  valgrind-3.14.0

# cat  autogen.sh

#  ./autogen.sh

# ./configure  --prefix=/usr/local/valgrind

# make

# make install



三、valgrind工具使用


#  /usr/local/valgrind/bin/valgrind  --help


四、生成可视化的图形


生成可视化的图形需要下载gprof2dot:https://pypi.org/project/gprof2dot/#files

这是个Python脚本,把它下载之后修改其权限chmod +7 gprof2dot.py ,并把这个脚本添加到$PATH路径中的任一文件夹下,我是将它放到了/usr/bin目录下,这样就可以直接在终端下执行gprof2dot.py了。

首先执行 gcc -pg -o tmp tmp.c,然后运行该程序./tmp,程序运行完成后会在当前目录下生成gmon.out文件(这个文件gprof在分析程序时需要),再执行gprof ./tmp | gprof2dot.py |dot -Tpng -o report.png,打开report.png结果:

再来看 Callgrind的生成调用图过程,执行:valgrind --tool=callgrind ./tmp,执行完成后在目录下生成"callgrind.out.XXX"的文件这是分析文件,可以直接利用:callgrind_annotate callgrind.out.XXX 打印结果,也可以使用:gprof2dot.py -f callgrind callgrind.out.XXX |dot -Tpng -o report.png 来生成图形化结果:


可以看到,生成的结果非常详细,甚至连函数入口,及库函数调用都标识出来了!



五、参考


Valgrind的安装及简单使用

https://www.cnblogs.com/qujingtongxiao/p/9901213.html

https://segmentfault.com/a/1190000017465212?utm_source=tag-newest


Valgrind使用说明

https://www.cnblogs.com/wangkangluo1/archive/2011/07/20/2111248.html


Linux 下Valgrind泄漏检查工具

https://blog.csdn.net/qq_33663749/article/details/70224241


valgrind工具使用

https://blog.csdn.net/yayaayaya123/article/details/81942745


valgrind,解决内存管理问题的最佳利器

https://baijiahao.baidu.com/s?id=1652356863601374476&wfr=spider&for=pc

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容