我的Valgrind使用笔记。
Valgrind Hello World
- Valgrind是用于调试和分析Linux程序的工具;
-
Valgrind提供了工具套件,用于检测内存管理和线程错误问题:
- Memcheck:用于检测内存管理问题,主要针对C和C++程序;
- Cachegrind:缓存探查器(profiler),用于检测缓存问题;
- Callgrind:Cachegrind的扩展,用于可视化调用图(callgraph);
- Massif:堆(heap)探查器,用于可视化堆使用情况;
- Helgrind:线程(thread)调试器,用于检测多线程程序中的数据竞争(data race);
- DRD:用于检测多线程C和C++程序中的错误;
- DHAT:用于检查程序的堆分配使用;
- Experimental Tools:试验性工具;
- Other Tools:其他工具;
-
使用以下命令安装Valgrind:
sudo apt install valgrind
命令说明
valgrind [valgrind-options] [your-program] [your-program-options]
常用语法
-
使用默认的Memcheck工具检查程序的内存使用情况:
valgrind program valgrind --tool=memcheck program
常用于检查内存泄露,注意首次出现
Invalid read/write of size *
的位置,必要时可以关闭命令行中的调试输出。 -
使用Memcheck工具详细报告程序所有可能的内存泄露:
valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all program
-
使用Cachegrind工具评测并记录程序的CPU缓存操作:
valgrind --tool=cachegrind program
-
使用Massif工具评测并记录程序的堆内存和栈(stack)使用情况:
valgrind --tool=massif --stacks=yes program