GNU gprof 和 graphviz 调优程序

GUN gprof 是一款分析程序运行的工具,可以提供程序调用关系,函数运行次数以及函数运行时间,为程序员最大限度的优化自己的程序提供帮助。记得在《可视化函数调用》中提到了可视化工具graphviz,结合gprof 和graphviz,并利用gprof2dot 可以可视化以上以上信息。

几个工具使用起来都非常方便。使用gprof 只需要在运行参数前加 -g 即可。然后

./test

运行可执行程序,将生成gmon.out 的日志文件(这是程序员也看不懂的二进制文件),使用下面命令

gprof ./test gmon.out >report.txt

生成report.txt 表。

想使用gprof2dot 可视化这个报表就更简单了,在gprof2dot 官网 下载gprof2dot.py 执行(确保你安装了python 和graphviz):

gprof ./test | gprof2dot.py | dot -Tpng -o output.png

怎么样! 是不是生成了一个output.png 的图片,打开看看吧!

继续阅读

Valgrind Tutorial

Valgrind 是用于调试程序的工具套件,其中最有名的工具是Memcheck,它能够检测出C/C++ 中因为内存错误导致程序中断的问题。

一、引言

使用Valgrind 有两个必要条件:一安装了Valgrind;二需要在编译程序参数中加上 -g 选项;尽量不要使用  -O2 或者更高级别的代码优化,这样会导致Memcheck 误报未初始化的参数(uninitialised-value errors )。 调试方法非常简单,如果你的程序如下执行:

MyProg arg1 arg2 ...

那么这样使用如下命令:

valgrind --leak-check=yes MyProg arg1 arg2 ...

Memcheck 是默认工具(也可以用 –tool=memcheck 指定工具),–leak-check 选项打开了内存泄露检查工具。

继续阅读