一、使用valgrind

1、安装

安装超级简单:
sudo apt-get install valgrind

2、使用

运行valgrind -h可以查看详细使用方法,命令格式如下:

valgrind [valgrind -h中的选项] 待测程序 [待测程序的命令行参数列表]

最重要的选项是–tool决定运行哪种Valgrind工具。
例如,使用内存检查工具Memcheck 运行“ls -l”命令 ,执行命令格式如下:

valgrind --tool = memcheck ls -l

Memcheck是默认设置,因此如果要使用它,则可以省略该–tool选项,如:

valgrind  ls -l
3、原理

无论使用哪种工具,Valgrind都会在程序启动前控制待测程序。从可执行文件和相关库中读取调试信息,以便在适当时可以根据源代码位置来表示错误消息和其他输出。

然后,待测程序将在Valgrind核心提供的“合成CPU”上运行。当新代码首次执行时,Valgrind核心将程序代码交给选定的工具。该工具将自己的检测代码添加到此处,并将结果交还给核心,核心协调持续执行此检测代码。

添加的检测代码量在不同工具之间差异很大。Memcheck添加了代码来检查每个内存访问和计算的每个值,使其运行速度比本机慢10-50倍。为Nulgrind(最小工具)根本不添加任何仪器,运行速度比本机慢4倍。

【linux】Valgrind工具集详解(二):入门相关推荐

  1. 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解

    [linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...

  2. 【linux】Valgrind工具集详解(五):命令行详解

    一.使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [参数选项] 程序和参数 二.选择工具 tool-selection opti ...

  3. 【linux】Valgrind工具集详解(一):简介

    一.Valgrind概述 Valgrind是用于构建动态分析工具的仪器框架.它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序.Valgrind的架构采用模块化设计,因此可以轻 ...

  4. 【linux】Valgrind工具集详解(十三):Helgrind(线程错误检测器)

    一.概述 Helgrind用于检测C.C ++和Fortran程序中使用符合POSIX标准的线程函数造成的同步错误. POSIX中关于线程的主要抽象描述有:共享公共地址空间的一组线程.线程创建.线程连 ...

  5. 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)

    一.概述 Memcheck是一个内存错误检测器.它可以检测C和C ++程序中常见的以下问题: 1.非法内存:如越界.释放后继续访问: 2.使用未初始化的值: 3.释放内存错误:如double-free ...

  6. 【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器

    一.概述 DHAT动态堆分析器.Massif(堆分析器)是在程序结束后输出分析结果,而DHAT是实时输出结果,所以叫做动态堆分析器.Massif只记录堆内存的申请和释放,DHAT还会分析堆空间的使用率 ...

  7. 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序

    一.概述 在Valgrind下运行的程序不是由CPU直接执行的.相反,它运行在Valgrind提供的合成CPU上.这就是调试器在Valgrind上运行时无法调试程序的原因. 二.快速入门 在使用Mem ...

  8. 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)

    一.概述 SGCheck是一种用于检查栈中和全局数组溢出的工具.它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察. 栈中的数据:例如函数内声明数组int a[10],而 ...

  9. 【linux】Valgrind工具集详解(四):抑制错误

    一.什么是抑制错误 错误检查工具可以检测系统库中的许多问题,例如C库,它是随操作系统预安装的.这些错误无法修复,并且有很多,但不希望看到这些错误.如何屏蔽这样错误就叫做"抑制错误" ...

最新文章

  1. mysql字段简索引_Mysql索引优化攻略(全)
  2. 还在用Excel做数据分析?两大方法5分钟完成别人一天的工作
  3. jpa 实体映射视图_JPA教程:实体映射-第3部分
  4. ElasticSearch 索引基本操作_04
  5. jQuery Form Plugin (二) :使用AJAX提交Form表单
  6. 每周更新:Element、Vant新版本更新、IntelliJ IDEA 2019.1 发布 RC 候选版、企业级 UI 设计语言Ant Design 3.15.2 发布
  7. python百度文库下载器_真正百度文库免费下载,比冰点文库下载器还更牛x!
  8. 微信小程序开发中医药配方小程序药方后台管理系统|前后分离VUE.js
  9. 历年奥斯卡获奖影片(1927—2015)
  10. 机房重构总结之步履蹒跚
  11. Ultimate Tic-Tac-Toe
  12. mac小白的实用技巧
  13. markdown在.html中生成目录
  14. 数据透视:Excel数据透视和Python数据透视
  15. 学习编程太枯燥?12款助你学编程的免费游戏送上!
  16. Washing Text Animation
  17. [Kali]安装360随身Wifi-3代驱动(失败)
  18. SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?
  19. 利用FFT分析比较卡尔曼滤波算法、低通滤波算法、滑动平均滤波的频谱
  20. 一生一芯 预学习阶段 搭建verilator仿真环境 之 示例:双控开关

热门文章

  1. POJ - 3041 Asteroids 二分图最小点覆盖
  2. python脚本——图片重命名、图片合成视频、faster-rcnn画P-R曲线
  3. 计算机网络管理的常用命令,网络管理常用命令图文详解.pdf
  4. linux sort 源码_Linux: 史上最全的sort命令案例,打包带走吧
  5. python可视化案例书籍推荐_这5款Python可视化神器,总有一款适合你!
  6. 天顶角Zenith方位角Azimuth
  7. 使用cat,awk和sort命令从nginx访问日志中统计user-agent类型
  8. 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
  9. ceph osd 相关命令
  10. navicat 几个 可用的东西