设为首页 加入收藏

TOP

应用 Valgrind 发现 Linux 程序的内存问题[图文]
2014-11-24 01:22:52 来源: 作者: 【 】 浏览:1
Tags:应用 Valgrind 发现 Linux 程序 内存 问题 图文

杨 经 (cdlyangj@cn.ibm.com), 软件工程师, IBM


如何定位应用程序开发中的内存问题,一直是 Linux 应用程序开发中的瓶颈所在。有一款非常优秀的 Linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题。掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开发中的内存问题。


应用 Valgrind 发现 Linux 程序的内存问题


Valgrind 概述


体系结构


Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:


Valgrind包括如下一些工具:


Linux 程序内存空间布局


要发现Linux下的内存问题,首先一定要知道在Linux下,内存是如何被分配的?下图展示了一个典型的Linux C程序内存空间布局:


一个典型的Linux C程序内存空间由如下几部分组成:


内存检查原理


Memcheck检测内存问题的原理如下图所示:


Memcheck 能够检测出内存问题,关键在于其建立了两个全局表。


对于进程的整个地址空间中的每一个字节(byte),都有与之对应的 8 个 bits;对于 CPU 的每个寄存器,也有一个与之对应的 bit 向量。这些 bits 负责记录该字节或者寄存器值是否具有有效的、已初始化的值。


对于进程整个地址空间中的每一个字节(byte),还有与之对应的 1 个 bit,负责记录该地址是否能够被读写。


检测原理:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux内段错误的解决办法 下一篇Java程序中的配置文件的存放和读取

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: