Valgrind 是一款 Linux下(支持 x86、x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和delete),找出内存泄漏问题。

  Valgrind 中包含的 Memcheck 工具可以检查以下的程序错误:

  使用未初始化的内存 (Use of uninitialised memory)
  使用已经释放了的内存 (Reading/writing memory after it has been free’d)
  使用超过malloc分配的内存空间(Reading/writing off the end of malloc’d blocks)
  对堆栈的非法访问 (Reading/writing inappropriate areas on the stack)
  申请的空间是否有释放 (Memory leaks – where pointers to malloc’d blocks are lost forever)
  malloc/free/new/delete申请和释放内存的匹配(Mismatched use of malloc/new/new [] vs free/delete/delete [])
  src和dst的重叠(Overlapping src and dst pointers in memcpy() and related functions)
  重复free

  1、编译安装 Valgrind:
wget http://valgrind.org/downloads/valgrind-3.4.1.tar.bz2
tar xvf valgrind-3.4.1.tar.bz2
cd valgrind-3.4.1/
./configure --prefix=/usr/local/webserver/valgrind
make
make install


  2、使用示例:对“ls”程序进程检查,返回结果中的“definitely lost: 0 bytes in 0 blocks.”表示没有内存泄漏。
[root@xoyo42 /]# /usr/local/webserver/valgrind/bin/valgrind --tool=memcheck --leak-check=full ls /
==1157== Memcheck, a memory error detector.
==1157== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==1157== Using LibVEX rev 1884, a library for dynamic binary translation.
==1157== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==1157== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==1157== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==1157== For more details, rerun with: -v
==1157==
bin   data0  dev  home  lib64       media  mnt  opt   root  selinux  sys       tcsql.db.idx.pkey.dec  ttserver.pid  var
boot  data1  etc  lib   lost+found  misc   net  proc  sbin  srv      tcsql.db  tmp                    usr
==1157==
==1157== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 5 from 1)
==1157== malloc/free: in use at exit: 28,471 bytes in 36 blocks.
==1157== malloc/free: 166 allocs, 130 frees, 51,377 bytes allocated.
==1157== For counts of detected errors, rerun with: -v
==1157== searching for pointers to 36 not-freed blocks.
==1157== checked 174,640 bytes.
==1157==
==1157== LEAK SUMMARY:
==1157==    definitely lost: 0 bytes in 0 blocks.
==1157==      possibly lost: 0 bytes in 0 blocks.
==1157==    still reachable: 28,471 bytes in 36 blocks.
==1157==         suppressed: 0 bytes in 0 blocks.
==1157== Reachable blocks (those to which a pointer was found) are not shown.
==1157== To see them, rerun with: --leak-check=full --show-reachable=yes


  3、使用示例:对一个使用libevent库编写的“httptest”程序进程检查,返回结果中的“definitely lost: 255 bytes in 5 blocks.”表示发生内存泄漏。
[root@xoyo42 tcsql-0.1]# /usr/local/webserver/valgrind/bin/valgrind --tool=memcheck --leak-check=full ./httptest
==1274== Memcheck, a memory error detector.
==1274== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==1274== Using LibVEX rev 1884, a library for dynamic binary translation.
==1274== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==1274== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==1274== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==1274== For more details, rerun with: -v
==1274==
==1274== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 1005 from 2)
==1274== malloc/free: in use at exit: 402,291 bytes in 74 blocks.
==1274== malloc/free: 15,939 allocs, 15,865 frees, 6,281,523 bytes allocated.
==1274== For counts of detected errors, rerun with: -v
==1274== searching for pointers to 74 not-freed blocks.
==1274== checked 682,468,160 bytes.
==1274==
==1274== 255 bytes in 5 blocks are definitely lost in loss record 17 of 32
==1274==    at 0x4A05FBB: malloc (vg_replace_malloc.c:207)
==1274==    by 0x3C1D809BC6: evhttp_decode_uri (http.c:2105)
==1274==    by 0x401C75: tcsql_handler (in /data0/tcsql/cankao/tcsql-0.1/tcsql)
==1274==    by 0x3C1D80C88F: evhttp_get_body (http.c:1582)
==1274==    by 0x3C1D8065F7: event_base_loop (event.c:392)
==1274==    by 0x403E2F: main (in /data0/tcsql/cankao/tcsql-0.1/tcsql)
==1274==
==1274== LEAK SUMMARY:
==1274==    definitely lost: 255 bytes in 5 blocks.
==1274==      possibly lost: 0 bytes in 0 blocks.
==1274==    still reachable: 402,036 bytes in 69 blocks.
==1274==         suppressed: 0 bytes in 0 blocks.
==1274== Reachable blocks (those to which a pointer was found) are not shown.
==1274== To see them, rerun with: --leak-check=full --show-reachable=yes


  检查httptest程序,发现有一处“char *decode_uri = evhttp_decode_uri(evhttp_request_uri(req));”中的“decode_uri”没有被free,再程序处理完成后加上“free(decode_uri);”后,再使用Valgrind检查,结果已经是“definitely lost: 0 bytes in 0 blocks.”。






技术大类 » 其他Unix技术 | 评论(62) | 引用(8) | 阅读(75749)
kkkk
2014-1-3 14:22
configure: error: Unsupported host architecture. Sorry
大海
2015-1-12 17:44
学习了。
Steven Email Homepage
2015-3-19 02:49
Thank you for this post Weight Loss Tea
rode Email Homepage
2015-3-20 22:40
Thank you for sharing this post with us asphalt 8 cheats
购买阿里微微外链的好处
[2015-6-10 23:37]
来源:崔圳力采
内容:购买阿里微微外链的好处

1.SEO优化的必经之路
2.快速提升网站的PR值
3.搜索引擎友好度优化的重要环节
4.提升网站搜索排名最好的手段和方式
http://www.alivv.com/?uid=3vasUJzi7YA=
有泉快充——网络充值平台
[2015-6-11 23:31]
来源:丁系岭助
内容:中国移动手机话费充值http://shop68418126.taobao.com/category-383550299.htm
中国联通手机话费充值http://shop68418126.taobao.com/category-383550300.htm
中国电信手机话费充值http://shop68418126.taobao.com/category-383550301.htm
中国购物搜索联盟:http://sounion.gouwuke.com
有泉快充——网络充值平台
[2015-6-17 02:05]
来源:白况其炊
内容:中国移动手机话费充值http://shop68418126.taobao.com/category-383550299.htm
中国联通手机话费充值http://shop68418126.taobao.com/category-383550300.htm
中国电信手机话费充值http://shop68418126.taobao.com/category-383550301.htm
中国购物搜索联盟:http://sounion.gouwuke.com
购物搜索联盟覃幻卯炎
[2015-10-14 14:18]
来源:白治因空
内容:购物客,中国第一家购物搜索联盟。现已收录当当、卓越、京东、新蛋、红孩子、DHC、玛萨玛索、VANCL、金象网等国内最具品质的B2C商家,致力于向广大消费者提供最便捷的网购入口、让用户轻松找到低价正品。http://sounion.gouwuke.com/
购物搜索联盟严昌奕并
[2015-10-14 15:56]
来源:陆匹均吻
内容:购物客,中国第一家购物搜索联盟。现已收录当当、卓越、京东、新蛋、红孩子、DHC、玛萨玛索、VANCL、金象网等国内最具品质的B2C商家,致力于向广大消费者提供最便捷的网购入口、让用户轻松找到低价正品。http://sounion.gouwuke.com/
最佳新人
2015-10-23 15:08
Valgrind是linux平台下的,就像tMemMonitor和VLD是windows下的。http://tmemmonitor.blog.51cto.com/10730870/1698129
最佳新人
2015-10-23 15:14
Valgrind是Linux下的,Windows下的博主可以试试tMemMonitor,最近发现超好用的,专注内存泄漏。http://tmemmonitor.blog.51cto.com/10730870/1698129
购物客搜索联盟,来这里购物最省钱!
[2015-10-30 12:20]
来源:卢订勉足
内容:购物客搜索联盟,来这里购物最省钱! 购物客,中国第一家购物搜索联盟。现已收录当当、卓越、京东、新蛋、红孩子、DHC、玛萨玛索、VANCL、金象网等国内最具品质的B2C商家,致力于向广大消费者提供最便捷的网购入口、让用户轻松找到低价正品。 http://gouwuke.n.puji114.com/ http://sounion.gouwuke.com/
购物客搜索联盟,来这里购物最省钱!
[2015-10-30 15:59]
来源:付更昀次
内容:购物客搜索联盟,来这里购物最省钱! 购物客,中国第一家购物搜索联盟。现已收录当当、卓越、京东、新蛋、红孩子、DHC、玛萨玛索、VANCL、金象网等国内最具品质的B2C商家,致力于向广大消费者提供最便捷的网购入口、让用户轻松找到低价正品。 http://gouwuke.n.puji114.com/ http://sounion.gouwuke.com/
购物客搜索联盟,来这里购物最省钱!
[2015-11-1 22:43]
来源:邵重委克
内容:购物客搜索联盟,来这里购物最省钱! 购物客,中国第一家购物搜索联盟。现已收录当当、卓越、京东、新蛋、红孩子、DHC、玛萨玛索、VANCL、金象网等国内最具品质的B2C商家,致力于向广大消费者提供最便捷的网购入口、让用户轻松找到低价正品。 http://gouwuke.n.puji114.com/ http://sounion.gouwuke.com/
动画制作 Homepage
2019-9-8 09:30
NUNINO
2020-11-25 16:37
Oh, great, your article provided me with useful information and a fresh perspective on your audience.boxnovel
ทางเข้า joker Email Homepage
2021-9-30 05:50
ทางเข้า joker 不错学习了
shz Email
2022-8-14 18:35
Very nice blog and articles. I am realy very happy to visit your blog. Now I am found which I actually want. I check your blog everyday and try to learn something from your blog. Thank you and waiting for your new post.  Lead generation
shz Email
2022-8-14 18:40
Well we really like to visit this site, many useful information we can get here.  Lead generation
shz Email
2022-8-14 18:43
I read that Post and got it fine and informative. Please share more like that...  Lead generation
分页: 3/4 第一页 上页 1 2 3 4 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]