Valgrind使用笔记

zxl19 2024-01-25

我的Valgrind使用笔记。

Valgrind Hello World

  1. Valgrind是用于调试和分析Linux程序的工具;
  2. Valgrind提供了工具套件,用于检测内存管理和线程错误问题:

    • Memcheck:用于检测内存管理问题,主要针对C和C++程序;
    • Cachegrind:缓存探查器(profiler),用于检测缓存问题;
    • Callgrind:Cachegrind的扩展,用于可视化调用图(callgraph);
    • Massif:堆(heap)探查器,用于可视化堆使用情况;
    • Helgrind:线程(thread)调试器,用于检测多线程程序中的数据竞争(data race);
    • DRD:用于检测多线程C和C++程序中的错误;
    • DHAT:用于检查程序的堆分配使用;
    • Experimental Tools:试验性工具;
    • Other Tools:其他工具;
  3. 使用以下命令安装Valgrind:

     sudo apt install valgrind
    

命令说明

valgrind [valgrind-options] [your-program] [your-program-options]

常用语法

  1. 使用默认的Memcheck工具检查程序的内存使用情况:

     valgrind program
     valgrind --tool=memcheck program
    

    常用于检查内存泄露,注意首次出现Invalid read/write of size *的位置,必要时可以关闭命令行中的调试输出。

  2. 使用Memcheck工具详细报告程序所有可能的内存泄露:

     valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all program
    
  3. 使用Cachegrind工具评测并记录程序的CPU缓存操作:

     valgrind --tool=cachegrind program
    
  4. 使用Massif工具评测并记录程序的堆内存和栈(stack)使用情况:

     valgrind --tool=massif --stacks=yes program
    

参考

  1. Valgrind
  2. linux valgrind 安装和使用-CSDN博客
  3. valgrind基本功能介绍、基础使用方法说明-CSDN博客
  4. Linux性能分析valgrind(一)之memcheck使用-Xin Lee的文章-知乎
  5. Linux性能分析valgrind(二)之callgrind使用-Xin Lee的文章-知乎
  6. Linux性能分析valgrind(三)之DRD(死锁分析利器)-Xin Lee的文章-知乎
  7. 大型C++项目如何检测内存泄漏?-玩转Linux内核的回答-知乎