【linux】Valgrind工具集详解(二):入门
一、使用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工具集详解(二):入门相关推荐
- 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解
[linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...
- 【linux】Valgrind工具集详解(五):命令行详解
一.使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [参数选项] 程序和参数 二.选择工具 tool-selection opti ...
- 【linux】Valgrind工具集详解(一):简介
一.Valgrind概述 Valgrind是用于构建动态分析工具的仪器框架.它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序.Valgrind的架构采用模块化设计,因此可以轻 ...
- 【linux】Valgrind工具集详解(十三):Helgrind(线程错误检测器)
一.概述 Helgrind用于检测C.C ++和Fortran程序中使用符合POSIX标准的线程函数造成的同步错误. POSIX中关于线程的主要抽象描述有:共享公共地址空间的一组线程.线程创建.线程连 ...
- 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
一.概述 Memcheck是一个内存错误检测器.它可以检测C和C ++程序中常见的以下问题: 1.非法内存:如越界.释放后继续访问: 2.使用未初始化的值: 3.释放内存错误:如double-free ...
- 【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器
一.概述 DHAT动态堆分析器.Massif(堆分析器)是在程序结束后输出分析结果,而DHAT是实时输出结果,所以叫做动态堆分析器.Massif只记录堆内存的申请和释放,DHAT还会分析堆空间的使用率 ...
- 【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
一.概述 在Valgrind下运行的程序不是由CPU直接执行的.相反,它运行在Valgrind提供的合成CPU上.这就是调试器在Valgrind上运行时无法调试程序的原因. 二.快速入门 在使用Mem ...
- 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)
一.概述 SGCheck是一种用于检查栈中和全局数组溢出的工具.它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察. 栈中的数据:例如函数内声明数组int a[10],而 ...
- 【linux】Valgrind工具集详解(四):抑制错误
一.什么是抑制错误 错误检查工具可以检测系统库中的许多问题,例如C库,它是随操作系统预安装的.这些错误无法修复,并且有很多,但不希望看到这些错误.如何屏蔽这样错误就叫做"抑制错误" ...
最新文章
- mysql字段简索引_Mysql索引优化攻略(全)
- 还在用Excel做数据分析?两大方法5分钟完成别人一天的工作
- jpa 实体映射视图_JPA教程:实体映射-第3部分
- ElasticSearch 索引基本操作_04
- jQuery Form Plugin (二) :使用AJAX提交Form表单
- 每周更新:Element、Vant新版本更新、IntelliJ IDEA 2019.1 发布 RC 候选版、企业级 UI 设计语言Ant Design 3.15.2 发布
- python百度文库下载器_真正百度文库免费下载,比冰点文库下载器还更牛x!
- 微信小程序开发中医药配方小程序药方后台管理系统|前后分离VUE.js
- 历年奥斯卡获奖影片(1927—2015)
- 机房重构总结之步履蹒跚
- Ultimate Tic-Tac-Toe
- mac小白的实用技巧
- markdown在.html中生成目录
- 数据透视:Excel数据透视和Python数据透视
- 学习编程太枯燥?12款助你学编程的免费游戏送上!
- Washing Text Animation
- [Kali]安装360随身Wifi-3代驱动(失败)
- SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?
- 利用FFT分析比较卡尔曼滤波算法、低通滤波算法、滑动平均滤波的频谱
- 一生一芯 预学习阶段 搭建verilator仿真环境 之 示例:双控开关
热门文章
- POJ - 3041 Asteroids 二分图最小点覆盖
- python脚本——图片重命名、图片合成视频、faster-rcnn画P-R曲线
- 计算机网络管理的常用命令,网络管理常用命令图文详解.pdf
- linux sort 源码_Linux: 史上最全的sort命令案例,打包带走吧
- python可视化案例书籍推荐_这5款Python可视化神器,总有一款适合你!
- 天顶角Zenith方位角Azimuth
- 使用cat,awk和sort命令从nginx访问日志中统计user-agent类型
- 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
- ceph osd 相关命令
- navicat 几个 可用的东西