初识valgrind

2023-05-16

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的输出信息中会包含行号,能够更方便的定位代码;

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识valgrind 的相关文章

  • C++ 空程序内存泄漏

    考虑下面的代码 int main return 0 我用 g 编译它并将输出传递给 valgrind 输出如下 11752 HEAP SUMMARY 11752 in use at exit 72 704 bytes in 1 blocks
  • 条件跳转或移动取决于未初始化的值

    我已经为这个问题苦苦挣扎了一段时间 寻找每一种可能的解决方案 我是 C 新手 所以不太难 我知道我有一些未初始化的变量 但我找不到它们 我正在尝试打印一个矩阵 这是构造函数 BoardP createNewBoard int width i
  • Valgrind/R 无法工作:“致命错误:无法创建 'R_TempDir'”

    首先 我对这些东西不太熟练 所以我可能会写一些愚蠢的问题 请友善 我有一个调用 C 代码的 R 代码 不幸的是 我的代码有问题 可能是内存未映射 我想使用 valgrind 尝试了解错误所在 几年前我已经使用过它 但现在似乎不起作用 当我午
  • std::线程问题

    我想我有一个非常糟糕的概念问题 为什么我使用 valgrind 时会遇到很多竞争条件错误 首先我认为这可能是一个错误 我在论坛中看到更新的 Linux 滚动版本将解决这个问题 所以现在我有 opensuse tubeleweed 100 更
  • C 库中的 Valgrind 错误?

    Valgrind 显示大小为 8 的错误的未初始化值 有时 以下条件跳转会出现未初始化值错误 我所做的就是使用 gcc 附带的 stdc 库打印格式化字符串 和内置的 vsnprintf 这是一个名为 format 的方法 它是自定义字符串
  • Valgrind 显示???对于行号,尽管 -g 标志

    main cpp include
  • 改变函数中指针的值

    我想更改函数中变量的值 我的代码是这样的 void change char buf char str xxxxxxx buf str int main char xxx NULL change xxx 当我用 valgrind 调试时 它说
  • Valgrind 无法在 Android 操作系统上执行 memcheck 工具?

    我已经编译了Valgrind http valgrind org 对于 ARM 使用this http valgrind org docs manual dist readme android html有较小的改动 使用指定的方法在手机上安
  • 如何更新 make 3.81 linux

    我是 Linux 新手 昨天安装的新手 我在大学的编程课程中需要它 并且我被告知要安装特定程序的特定版本 但尽管我已经使用 apt get install 来安装他们 之前已经完成了 apt get update 他们的版本不正确 我需要的
  • 在 OSX 上,Valgrind 报告此内存泄漏,它来自哪里?

    在 OSX 上 Valgrind 报告此内存泄漏 它来自哪里 该代码是用 g 作为 c 代码编译的 我这样做是为了函数重载 13088 18 bytes in 1 blocks are definitely lost in loss rec
  • valgrind --trace-children=yes 报告泄漏,尽管 atexit 清理

    我试图避免 valgrind 的误报 但我对以下组合感到很糟糕atexit and fork 尽管使用 trace children yes 我的代码 include
  • TBB 可能存在内存泄漏

    测试程序 include
  • 为什么 valgrind 在我的“测试”程序中没有检测到内存泄漏? [复制]

    这个问题在这里已经有答案了 整个测试代码包含在main cpp中 如下 include
  • C malloc valgrind 大小写入无效

    我曾经遇到过公平份额 malloc 无效写入 以及本网站上的许多示例 但我仍然无法指出导致某些写入的原因 这里我有一个用于图形的邻接矩阵 在分配时 我从 valgrind 获得无效写入 但整个程序中没有分段错误 我也得到无效的读取 但我认为
  • strdup():对警告感到困惑(“隐式声明”、“使指针...无需强制转换”、内存泄漏)

    当我编译下面的一小段代码 其中我们定义一个字符串 然后使用 strdup 来制作副本 时 我收到 3 个警告 来自 GCC 的 2 个编译器警告和来自 valgrind 的 1 个运行时警告 错误 我怀疑内存泄漏错误 由 valgrind
  • 为什么 C 允许缺少函数声明?

    今天我们遇到了一个不寻常的现象 一位同事在他的代码中调用了一个正常运行的函数 这触发了 libc gethostbyname 中的段错误 令人费解的是 相同的函数在同一运行时的其他源文件中运行没有问题 令人惊讶的是 当使用 valgrind
  • C++ 程序在执行 std::string 分配时总是崩溃

    我一直在尝试调试崩溃的应用程序中的崩溃 即断言 检测到 glibc free 无效指针 0x000000000070f0c0 当我尝试对字符串进行简单分配时 请注意 我正在使用 gcc 4 2 4 的 Linux 系统上进行编译 优化级别设
  • 是否可以让 valgrind 忽略某些库?

    或者最好是全部而不只是我的代码 我的程序使用 Gtk Loudmouth 和其他一些东西 而这两个 以及它们背后的一些 libgcrypto libssl 本身导致了如此多的错误 以至于我无法检测到我自己的错误 是否有可能让 valgrin
  • Linux上的轻量级内存泄漏调试

    我首先寻找现有的答案并看到Valgrind是大家最喜欢的 Linux 内存泄漏调试工具 很遗憾Valgrind似乎不适合我的目的 我将尝试解释原因 限制条件 泄漏仅在客户环境中重现 由于某些 法律限制我们必须使用现有的二进制文件 没有重建
  • valgrind 和 iOS SDK 4.2?

    使用 valgrind 运行 iOS 4 2 应用程序时遇到问题 我从 Macports 安装了 valgrind 3 6 0 SVN Xcode 3 2 5 当我修改 main 以运行 valgrind 时 我得到以下输出 Detecte

随机推荐

  • Harbor 镜像复制 每 30 分钟发生一次超时

    报错信息 span class token number 2022 span 10 27T22 27 13Z span class token punctuation span ERROR span class token punctuat
  • 配置对 Harbor 的 HTTPS 访问

    配置对 Harbor 的 HTTPS 访问 默认情况下 xff0c Harbor 不附带证书 可以在没有安全性的情况下部署 Harbor xff0c 以便你可以通过 HTTP 连接到它 但是 xff0c 在生产环境中 xff0c 建议使用
  • 申请阿里云免费证书

    阿里云免费SSL证书申请 阿里云免费SSL证书是赛门铁克 xff08 Symantec xff09 品牌的 xff0c 免费证书只能保护一个域名 xff08 带www和不带www可以通用 xff09 阿里云个人账号和企业账号均可申请 xff
  • centos 7 / 8 texinfo安装

    在安装一些软件时会出现缺少texinfo的提示 xff0c 在centos7中texinfo非常容易安装 xff0c 只要执行 yum span class token function install span y texinfo 就可以
  • Harbor使用公网证书

    Harbor使用公网证书 申请公网证书 申请阿里云免费证书 因为Harbor使用Nginx做代理 xff0c 因此在公网证书审核通过后 xff0c 在证书下载面板 xff0c 单击Nginx服务器操作列的下载 下载解压后您将会获得以下文件
  • mysql查看实时语句和慢sql

    mysql查看实时语句和慢sql 查看实时语句 Mysql除了手动执行的语句 xff0c 还有很多在后台由其他模块执行的语句 xff0c 按理来说 xff0c 那些由其他模块执行的语句是不能实时查看的 xff0c 因为这个资源消耗特别的大
  • iPerf3 命令通用选项

    iPerf3 命令通用选项 同时适用于客户端与服务器端 命令选项命令描述 p port nThe server port for the server to listen on and the client to connect to Th
  • 在Ubuntu 14.04中修改date的显示

    最近把开发环境切换到了Ubuntu 14 04 xff0c 发现一点很别扭 xff0c 就是date显示为中文 例如 lipeng 64 lipeng MS 7673 date 2015年 02月 14日 星期六 21 16 21 CST
  • 2021美团笔试题(第十套)个人解答

    1 淘汰分数 span class token comment 暴力解法 span span class token keyword import span span class token namespace java span clas
  • 不同方式输出九九乘法表(java)

    方式一 xff1a System out println 34 打印正方形 34 正方形 for int i 61 1 i lt 61 9 i 43 43 外层循环控制行 for int j 61 1 j lt 61 9 j 43 43 内
  • Blazor Json Web Token 身份验证与授权

    Blazor 身份验证与授权 身份验证 Blazor Server应用和 Blazor WebAssembly 应用的安全方案有所不同 Blazor WebAssembly Blazor WebAssembly 应用在客户端上运行 由于用户
  • 编程之美读书笔记_3.3_计算字符串的相似度

    3 3 计算字符串的相似度 和计算两字符串的最长公共子序列相似 设Ai 为字符串A a1a2a3 am 的前i 个字符 xff08 即为a1 a2 a3 ai xff09 设Bj 为字符串B b1b2b3 bn 的前j 个字符 xff08
  • vxworks 开发环境搭建

    安装指南 1 安装VxWorks6 9 xff08 光盘文件是DVD R147826 1 1 01 vx69 udf iso xff09 1 不要选择两个check 选项 xff0c 可以节省不必要的时间 xff1b 2 Next 到如图
  • ffmpeg调用avformat_open_input打开rtmp转发流阻塞

    G28181协议接入时 xff0c 为了减少视频处理服务的改动 xff0c 故采用了rtmp转发的方案 使用nginx搭建rtmp转发服务器 xff0c 设备代理将流推送给nginx xff0c nginx再将流转发给视频处理服务 但设备代
  • 交叉编译一个能在mips下运行的vim编译器

    有了交叉编译环境 xff0c 下一步就能在我的路由器和光猫上搞更多的事情了 我的目标是编译出能够在路由器上运行的二进制程序 1 对交叉编译的理解 什么是交叉编译 xff1f 我们常用的路由器 光猫 电视盒等等都运行着一个系统 xff0c 它
  • CAP 定理的含义

    CAP 定理的含义 作者 xff1a 阮一峰 日期 xff1a 2018年7月16日 分布式系统 xff08 distributed system xff09 正变得越来越重要 xff0c 大型网站几乎都是分布式的 分布式系统的最大难点 x
  • boost::any实现解析

    忘记当初具体想做什么了 xff0c 只记得要求 xff1a 将各种类型 xff08 如int xff0c char xff0c float xff0c 自定义类型等 xff09 放到一个容器里 这样的要求 xff0c 目前stl的任何容器都
  • 程序性能优化工具——gprof

    gprof是程序性能分析的一个重要工具 xff0c 通过gprof工具可以获取程序中函数之间的调用关系 xff0c 每个函数的调用次数 xff0c 及函数的消耗时间 xff0c 从而为程序性能优化指明方向 由此也可以推断出 xff0c 一个
  • 程序性能优化之分支预测

    程序是由多条指令构成的 xff0c 程序的运行便是cpu一条一条执行程序指令的过程 一条指令的执行过程大致可以分为加载指令 xff0c 翻译指令 xff0c 加载数据 xff0c 执行运算 xff0c 更新数据几个阶段 xff0c 每个阶段
  • 初识valgrind

    valgrind是一款非常优秀的性能调试工具 xff0c 通过valgrind xff0c 可以完成以下几点工作 xff1a 1 Memcheck xff1a 内存错误检测 2 Cachegrind xff1a 缓存和分支预测分析 3 Ca