Valgrind

Valgrind

Valgrind 是一个检测框架,它附带了一系列用于分析应用程序性能的工具。它可以用于检测各种内存错误和内存管理问题,例如使用未初始化的内存或不当的内存分配和释放,或识别系统调用中使用不当的参数。要获取随 Red Hat Developer Toolset 版本 Valgrind 分发的完整分析工具列表,请参见表 12.1,“随 Red Hat Developer Toolset 分发的 Valgrind 工具”。

Valgrind 通过重写应用程序并对其重写的二进制文件进行检测来分析应用程序。这允许您在无需重新编译的情况下分析应用程序,但这也使得 Valgrind 比其他分析器明显慢,尤其是在执行极其详细的运行时。因此,它不适合调试时间特定的问题或内核空间调试。

Red Hat Developer Toolset 附带的 Valgrind 版本是 3.14.0。这个版本比 Red Hat Developer Toolset 之前版本中包含的版本更新,并提供了许多错误修复和增强功能。

表 12.1 随 Red Hat Developer Toolset 分发的 Valgrind 工具

名称描述
Memcheck通过拦截系统调用并检查所有读写操作来检测内存管理问题。
Cachegrind通过模拟一级指令缓存(I1)、一级数据缓存(D1)和统一的二级缓存(L2)来识别缓存未命中的来源。
Callgrind生成代表函数调用历史的调用图。
Helgrind检测使用 POSIX 线程原语的多线程 C、C++ 和 Fortran 程序中的同步错误。
DRD检测使用 POSIX 线程原语或任何建立在这些 POSIX 线程原语之上的线程概念的多线程 C 和 C++ 程序中的错误。
Massif监控堆和栈的使用情况。

安装 Valgrind

在 Red Hat Developer Toolset 中,Valgrind 由 devtoolset-8-valgrind 包提供,并自动与 devtoolset-8-perftools 一起安装。

要获取如何将 Red Hat Developer Toolset 及其相关包安装到系统的详细说明,请参见第 1.5 节,“安装 Red Hat Developer Toolset”。

请注意,如果您将 Valgrind 与 GNU Debugger 结合使用,建议使用 Red Hat Developer Toolset 中包含的 GDB 版本,以确保所有功能都得到完全支持。

使用 Valgrind

要在想要分析的程序上运行任何 Valgrind 工具:

$ scl enable devtoolset-8 'valgrind --tool=tool program argument...'

请参阅表 12.1,“随 Red Hat Developer Toolset 分发的 Valgrind 工具”,获取随 Valgrind 分发的工具列表。--tool 命令行选项的参数必须用小写字母指定,如果省略此选项,Valgrind 默认使用 Memcheck。例如,要在程序上运行 Cachegrind 以识别缓存未命中的来源:

$ scl enable devtoolset-8 'valgrind --tool=cachegrind program argument...'

请注意,可以使用 scl 实用程序执行任何命令,使其使用 Red Hat Developer Toolset 二进制文件而不是 Red Hat Enterprise Linux 系统等效项。这这允许你默认使用Red Hat Developer Toolset Valgrind运行shell会话:

$ scl enable devtoolset-8 'bash'

要随时验证您正在使用的 Valgrind 版本:

$ which valgrind

Red Hat Developer Toolset 的 valgrind 可执行文件路径将以 /opt 开头。或者,您可以使用以下命令确认版本号与 Red Hat Developer Toolset Valgrind 的版本号相匹配:

$valgrind --version

其他资源

有关 Valgrind 及其功能的更多信息,请参见下面列出的资源。

安装文档

  • valgrind(1) —— valgrind 实用程序的手册页提供了有关如何使用 Valgrind 的详细信息。要显示 Red Hat Developer Toolset 中包含的版本的手册页:
$ scl enable devtoolset-8 'man valgrind'
  • Valgrind 文档 —— Valgrind 的 HTML 文档位于 /opt/rh/devtoolset-8/root/usr/share/doc/devtoolset-8-valgrind-3.13.0/html/index.html

在线文档

另见

  • 第 1 章,Red Hat Developer Toolset —— Red Hat Developer Toolset 的概述以及如何在您的系统上安装它的更多信息。
  • 第 10 章,memstomp —— 使用 memstomp 实用程序识别不允许的各种标准的重叠内存区域的库函数调用的说明。
  • 第 11 章,SystemTap —— SystemTap 工具的介绍以及如何使用它来监控运行中的系统活动。
  • 第 13 章,OProfile —— 使用 OProfile 工具确定代码的哪些部分消耗了最多的 CPU 时间以及原因的说明。
  • 第 14 章,Dyninst —— 使用 Dyninst 库来工具化用户空间可执行文件的说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值