今天小试了一把valgrind的massif工具。Massif在valgrind中的介绍是这样的:
Massif
Massif is a heap profiler. It performs detailed heap profiling by taking regular snapshots of a program's heap. It produces a graph showing heap usage over time, including information about which parts of the program are responsible for the most memory allocations. The graph is supplemented by a text or HTML file that includes more information for determining where the most memory is being allocated. Massif runs programs about 20x slower than normal.
可以看出Massif是一个内存剖析工具。通过不断的取程序堆的快照来达到监视程序内存分配的目的。
我们来编写一个这样的C++文件:test.cc
#include <stdlib.h>
#include <stdio.h>
int *fa()
{
int *p=(int*)malloc(10000);
return p;
}
int *fb(int *p)
{
delete p;
}
int main(void)
{
printf("ok\n");
printf("really ok?\n");
int *vec[10000];
for(int i=0;i<10000;i++)
{
vec[i]=fa();
}
for(int i=0;i<10000;i++)
{
fb(vec[i]);
}
return 0;
}
使用g++进行编译:
g++ test.cc -o test
然后使用valgrind的massif:
valgrind --tool=massif ./test
最后就得到一个massif文件:massif.out.32682 (32682代码进程pid)
使用ms_print来解析这个输出文件:
ms_print massif.out.32682
最后得到解析结果:
通过图形可以看出Heap随时间变化的变化,可以通过分析下面的函数信息得到究竟是那些函数占用了大量的内存。
- 大小: 98.4 KB
分享到:
相关推荐
- **Massif**:内存堆分析工具,可以分析程序的内存使用情况,生成堆内存使用的历史快照,帮助优化内存分配。 Valgrind虽然强大,但也有一些限制。由于它需要动态分析程序执行,因此运行速度通常会比正常运行慢很多...
**正文** 在嵌入式开发领域,特别是在基于ARM架构的设备上,内存管理是一个至关重要的环节。内存泄漏作为软件开发中的常见问题,可能导致系统...理解并熟练使用Valgrind,是成为一名优秀嵌入式开发者的关键技能之一。
Valgrind支持多种工具,包括但不限于Memcheck、Addrcheck、Cachegrind、Massif、Helgrind和Callgrind等。这些工具分别针对不同的需求提供了细致的功能支持。 - **Memcheck**:这是Valgrind中最常用的一个工具,主要...
Valgrind是一款强大的开源调试和性能分析工具,主要用于检测C/C++程序中的内存错误和性能问题。它通过模拟CPU指令来监控程序的行为,提供了一系列的子工具,如memcheck、callgrind、cachegrind、helgrind和massif等...
1. **Memcheck**:这是 Valgrind 最常用的工具之一,主要用于检测内存错误。它可以帮助开发者找出诸如使用未初始化的内存、读/写已经被释放的内存、内存越界等常见的内存问题。此外,它还能检测到内存泄漏和不当的...
- **定义**:Valgrind 是一套强大的动态分析工具框架,专为软件开发者提供一系列的调试和性能分析工具。 - **特点**: - 模块化架构:允许轻松扩展新工具而不干扰现有结构。 - 支持多种平台:尽管与CPU和操作系统...
- **介绍**:介绍了Valgrind工具集提供的多种调试和性能分析工具,其中最受欢迎的是Memcheck工具,它可以检测C和C++程序中常见的内存错误。 - **准备程序**: - 使用`-g`选项编译程序以包含调试信息,这样可以帮助...
Valgrind还包含了其他一些工具,例如Helgrind用于检测线程间的数据竞争,Massif用于堆内存使用分析,这些工具可以帮助开发者深入理解程序的并发行为和内存使用模式。 为了帮助用户更好地使用Valgrind,压缩包内的...
引言**:简述Valgrind工具集的功能及核心工具Memcheck的作用。 - **2. 准备程序**:介绍如何编译程序以便Valgrind可以更准确地检测错误。 - **建议使用`-g`选项**:在编译时加入该选项,以包含调试信息,使...
其他工具如Callgrind用于分析函数调用,Cachegrind关注缓存效率,Helgrind检查多线程竞争条件,Massif则用于监控堆栈使用。 在了解Valgrind之前,理解Linux程序的内存布局是至关重要的。程序内存通常包括代码段(....
4. **工具介绍**:列出Valgrind支持的各种工具,例如Memcheck(内存错误检测)、Cachegrind(缓存分析)、Helgrind(多线程错误检测)和Massif(堆分配分析)等。 5. **基本分析报告**:解释如何解读Valgrind生成的...
Valgrind是一款强大的内存调试、性能分析和内存泄漏检测工具,尤其在Linux环境下,它被广泛用于C++程序的开发和优化。Valgrind通过构建一个虚拟机来运行你的程序,从而可以在程序运行时进行细致的监控,帮助开发者...
5. **Massif**:堆栈分析工具,测量程序在运行过程中堆栈内存的使用情况。对于减少内存占用、提高程序效率等方面具有重要作用。 #### 安装Valgrind 安装Valgrind的过程相对简单,主要步骤如下: 1. 从官方网站下载...
对于CSDN下载资源的使用,如果是Valgrind相关的文档,则建议按照上述介绍的方法来使用Valgrind工具。 #### 五、总结 Valgrind是一款非常强大的内存调试工具,它通过不同的工具帮助开发者发现并修复程序中的各种内存...
4. 更多工具:Valgrind还包含其他工具,如Massif(内存分配分析)、Helgrind(多线程同步问题检测)等,为开发者提供了全面的调试和优化手段。 四、使用步骤 1. 解压:首先,我们需要解压"arm-linux-gnueabihf-...
4. **指针分析**:Valgrind的Massif工具用于分析程序的堆内存分配,展示内存使用随时间的变化,帮助识别潜在的内存泄漏和不必要的内存占用。 5. **自定义工具**:Valgrind的框架允许用户创建自己的分析工具,针对...
Valgrind支持多种工具,包括memcheck、cachegrind、helgrind、callgrind、massif等,每个工具都有其特定的功能,共同构成了一个全面的程序分析框架。 #### 二、Valgrind安装步骤 为了更好地理解和使用Valgrind,...
Valgrind是一款强大的开源内存调试、内存泄漏检测和性能分析工具,主要用于找出程序中的内存管理问题和线程同步错误。本手册将详细介绍Valgrind的安装步骤和包含的工具。 首先,Valgrind的安装过程相对简单。从官方...
5. **Massif**:这是一个堆栈分析工具,可以帮助开发者了解程序在堆和栈上的内存使用情况,从而找出可能的内存优化点。 6. **lackey**:lackey是Valgrind提供的一个示例程序,用于展示如何创建自定义工具,以便针对...
Massif 是 Valgrind 的一个工具,用于检测程序中的堆栈问题。它可以检测程序中的堆栈使用情况、堆栈泄露问题等。Massif 的使用方法也非常简单,只需要在命令行中输入 `valgrind --tool=massif ./program`,就可以对...