Valgrind介绍.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Valgrind介绍

Valgrind介绍 QA 陈伟 2008.9.25 一 什么是valgrind valgrind是一款运行在linux下的,用来定位c/c++程序中内存使用方面的错误的工具,包括:内存泄漏、使用未初始化的内存、读/写已释放的内存、读/写内存越界、使用malloc/new/new[]和free/delete/delete[]不匹配,等等。 Valgrind是帮助程序员寻找程序里的bug和改进程序性能的工具。程序通过valgrind运行时,valgrind收集各种有用的信息,通过这些信息可以找到程序中潜在的bug和性能瓶颈。 二 valgrind的安装 下载 下载最新版valgrind-3.3.1.tar.bz2 安装 解压安装包:tar –jxvf valgrind3.3.1.tar.bz2 解压后生成目录valgrind-3.3.1 cd valgrind-3.3.1 ./configure make make install 好了,现在已经安装好了valgrind,可以开始了解如何使用它了。 三 valgrind的工具介绍 使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固 Valgrind支持很多工具:Memcheck,Addrcheck,Cachegrind,Massif,Helgrind和Callgrind等 在运行Valgrind时,你必须指明想用的工具; valgrind默认使用memcheck工具,即默认参数 --tools=memcheck Memcheck 这个工具可以用来寻找c、c++程序中内存管理的错误。写c或c++程序时,很多隐藏很深的bug是内存操作上出了问题,而这些在Memcheck面前都无处遁形。 Memcheck可以检查出下列几种内存操作上的错误: ????? 读写已经释放的内存 读写内存块越界 使用还未初始化的变量 将无意义的参数传递给系统调用 内存泄漏 Cachegrind 用于检查缓存使用的工具 它模拟 CPU中的一级缓存I1,D1和L2二级缓存,能够精确地指出程序中 cache的丢失和命中。如果需要,它还能够为我们提供cache丢失次数,内存引用次数,以及每行代码,每个函数,每个模块,整个程序产生的指令数。这对优化程序有很大的帮助。 在x86和amd64上,cachegrind通过CPUID自动探测机器的cache配置,所以在多数情况下它不再需要更多的配置信息了。 cache对目前系统的性能有决定性的影响。因此这些信息可以指导程序员调整代码,最大限度的提高程序性能。 Callgrind Callgrind收集程序运行时的一些数据,函数调用关系等信息,还可以有选择地进行cache 模拟。在运行结束时,它会把分析数据写入一个文件。 callgrind_annotate可以把这个文件的内容转化成可读的形式。 Helgrind 用于检测多线程竞争资源的工具 它主要用来检查多线程程序中出现的竞争问题。Helgrind 寻找内存中被多个线程访问,而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发掘的错误。Helgrind实现了名为”Eraser” 的竞争检测算法,并做了进一步改进,减少了报告错误的次数。 Massif 堆栈分析器,它能测量程序在堆栈中使用了多少内存,告诉我们堆块,堆管理块和栈的大小。Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率 程序开发者通过它可以深入了解程序的内存使用行为,从而对内存使用进行优化。这个功能对C++尤其有用(因为C++有很多隐藏的内存分配和释放) 四 Valgrind使用方法 对被测程序的要求: 要求用gcc编译时使用-g选项 例如对test.c程序进行编译:gcc -g -o test test.c 基本用法: valgrind [option] exefile arg... [option]:参数选项 exefile:可执行程序 arg...:程序参数 使用内存检测: option参数必须加上--leak-check=yes 举例:以程序test为例,检查test程序内存错误: valgrind --leak-check=yes

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档