valgrind是一款非常优秀的性能调试工具,通过valgrind,可以完成以下几点工作:
1. Memcheck:内存错误检测
2. Cachegrind:缓存和分支预测分析
3. Callgrind:性能分析图
4. Helpgrind:线程错误分析系
5. Missif:堆分析
6. DRD:线程错误分析
valgrind的基本使用命令如下:
valgrind --tool=name ./program args
name是使用到的工具名称,包括memcheck,cachegrind,callgrind,helgrind,drd,massif。如果不指定工具(valgrind ./program args),valgrind将默认使用memcheck工具。
使用valgrind需要注意一下几点问题:
1.如果使用memcheck工具,尽量关闭优化。因为优化后生成的程序,通过valgrind去进行内存错误检测,会出现未初始化的错误,或者丢失未初始化的信息(来自官网,暂未碰到);
2.编译时,使用-g选项,生成调试信息,是个不错的选项,这样valgrind的输出信息中会包含行号,能够更方便的定位代码;