第 13 章 Valgrind

Valgrind 是一个工具框架,随附一些工具来分析应用程序。它可用于检测各种内存错误和内存管理问题,如使用未初始化内存或内存不足的分配和释放内存,或者识别系统调用中不正确的参数。如需通过 Red Hat Developer Toolset 版本的 Valgrind 分发的性能分析工具的完整列表,请参阅 表 13.1 “使用 Red Hat Developer Toolset 的 Valgrind 分发工具”

Valgrind 配置集会重新编写应用程序并检测重写的二进制代码。这可让您在不重新编译应用程序的情况下对应用程序进行性能分析,但它也比其他配置集器要慢得多,特别是在执行非常详细的运行时时。 因此,它不适用于调试特定时间的问题或内核空间调试。

Red Hat Developer Toolset 带有 Valgrind 3.17.0。此版本比 Red Hat Developer Toolset 中包含的版本更新,提供多个程序错误修复和增强。

表 13.1. 使用 Red Hat Developer Toolset 的 Valgrind 分发工具

Name描述

Memcheck

通过截获系统调用并检查所有读写操作,检测内存管理问题。

cachegrind

通过模拟 1 指令缓存(I1)、级别 1 数据缓存(D1)和统一级 2 缓存(L2)来识别缓存丢失的来源。

Callgrind

生成代表函数调用历史记录的调用图形。

Helgrind

检测多线程 C、C++ 和 Fortran 程序使用 POSIX 线程原语的同步错误。

DRD

检测多线程 C 和 C++ 程序中的错误,它们使用 POSIX 线程原语或其他在 POSIX 线程原语基础上构建的任何其他线程概念。

Massif

监控堆和堆栈使用情况。

13.1. 安装 Valgrind

在 Red Hat Developer Toolset 中,Vrind 由 devtoolset-11-valgrind 软件包提供,并会自动安装 devtoolset-11-perftools

有关如何在系统中安装 Red Hat Developer Toolset 和相关软件包的详情,请参考 第 1.5 节 “安装 Red Hat Developer Toolset”

注意

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