Ubuntu下安装Valgrind很简单,直接从ubuntu软件中心下载安装,并且还会提供一个简单的图形界面。。当然,你也可以在命令行中使用。

Valgrind实际上是一个工具集,包含多个调试工具,如常用的memcheck,当程序日渐庞大时,内存泄漏是个很头疼的问题,可以使用如下命令,来检测:

valgrind --tool=memcheck --leak-check=yes ./main

其中./main是需要检测的程序。当程序运行结束或中止时,会打印出内存信息。

这是本人运行程序过程中强制终止的信息:

=3516== HEAP SUMMARY:

==3516==     in use at exit: 691,535 bytes in 912 blocks

==3516==   total heap usage: 1,168 allocs, 256 frees, 2,524,201 bytes allocated

==3516==

==3516== 8 bytes in 1 blocks are definitely lost in loss record 180 of 587

==3516==    at 0x4026864: malloc (vg_replace_malloc.c:236)

==3516==    by 0x804D636: AnalyzeCBlock (AnalyzePage.c:1706)

==3516==    by 0x804DA51: AnalyzePage (AnalyzePage.c:1825)

==3516==    by 0x80645DC: GetTGPFromSoGouBySA (wrapper.c:1148)

==3516==    by 0x8068BB6: ExeOneDS (wrapper.c:2847)

==3516==    by 0x8068F98: ExecuteDataSource (wrapper.c:2972)

==3516==    by 0x80541BC: SearchPlan (SearchPlan.c:263)

==3516==    by 0x8054847: ThreadFunction_Regular (UserRegular.c:105)

==3516==    by 0x8052C14: wrapper_fn (ThreadPool.c:100)

==3516==    by 0x4063E98: start_thread (pthread_create.c:304)

==3516==    by 0x41475FD: clone (clone.S:130)

==3516==

==3516== 8 bytes in 1 blocks are definitely lost in loss record 181 of 587

==3516==    at 0x4026864: malloc (vg_replace_malloc.c:236)

==3516==    by 0x804D636: AnalyzeCBlock (AnalyzePage.c:1706)

==3516==    by 0x804DA51: AnalyzePage (AnalyzePage.c:1825)

==3516==    by 0x8065A70: GetAlbumFromBaiduBySinger (wrapper.c:1602)

==3516==    by 0x8068BB6: ExeOneDS (wrapper.c:2847)

==3516==    by 0x8068D99: ExecuteDataSource (wrapper.c:2916)

==3516==    by 0x80541BC: SearchPlan (SearchPlan.c:263)

==3516==    by 0x8054847: ThreadFunction_Regular (UserRegular.c:105)

==3516==    by 0x8052C14: wrapper_fn (ThreadPool.c:100)

==3516==    by 0x4063E98: start_thread (pthread_create.c:304)

==3516==    by 0x41475FD: clone (clone.S:130)

..........................

.......

==3516==LEAK SUMMARY:

==3516==    definitely lost: 768 bytes in 13 blocks

==3516==    indirectly lost: 3,728 bytes in 134 blocks

==3516==      possibly lost: 544 bytes in 4 blocks

==3516==    still reachable: 686,495 bytes in 761 blocks

==3516==         suppressed: 0 bytes in 0 blocks

==3516== Reachable blocks (those to which a pointer was found) are not shown.

==3516== To see them, rerun with: --leak-check=full --show-reachable=yes

==3516==

==3516== For counts of detected and suppressed errors, rerun with: -v

==3516== Use --track-origins=yes to see where uninitialised values come from

==3516== ERROR SUMMARY: 32 errors from 24 contexts (suppressed: 33 from 8)

在最后会给出统计信息,32个内存错误,看样子,www.linuxidc.com我有的忙了,不过幸好这个工具给出了具体出错的位置,不用花几天的功夫去检测!!!

以下是从网上摘录的

///

用法: valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind 工具

-tool= 最常用的选项。运行 valgrind 中名为toolname的工具。默认memcheck。

h –help 显示帮助信息。

-version 显示valgrind 内核的版本,每个工具都有各自的版本。

q –quiet 安静地运行,只打印错误信息。

v –verbose 更详细的信息, 增加错误数统计。

-trace-children=no|yes 跟踪子线程? [no]

-track-fds=no|yes 跟踪打开的文件描述?[no]

-time-stamp=no|yes 增加时间戳到LOG信息? [no]

-log-fd= 输出LOG到描述符文件 [2=stderr]

-log-file= 将输出的信息写入到filename.PID的文件里,PID是运行程序的进行ID

-log-file-exactly= 输出LOG信息到 file

-log-file-qualifier= 取得环境变量的值来做为输出信息的文件名。 [none]

-log-socket=ipaddr:port 输出LOG到socket ,ipaddr:port

LOG信息输出

-xml=yes 将信息以xml格式输出,只有memcheck可用

-num-callers= show callers in stack traces [12]

-error-limit=no|yes 如果太多错误,则停止显示新错误? [yes]

-error-exitcode= 如果发现错误则返回错误代码 [0=disable]

-db-attach=no|yes 当出现错误,valgrind 会自动启动调试器gdb。[no]

-db-command= 启动调试器的命令行选项[gdb -nw %f %p]

适用于Memcheck工具的相关选项:

-leak-check=no|summary|full 要求对leak给出详细信息? [summary]

-leak-resolution=low|med|high how much bt merging in leak check [low]

-show-reachable=no|yes show reachable blocks in leak check? [no]

linux安装系统内存检测,Ubuntu下安装内存检测工具Valgrind相关推荐

  1. ubuntu安装python库_Python安装:如何在ubuntu下安装python库

    上面介绍到了python安装中如何在Windows下按章python库,接下来上海python培训小编介绍另外一种方法:如何在ubuntu下安装python库. 在ubuntu下进行python库的安 ...

  2. 安装linux的系统分区格式化,Ubuntu下分区格式化U盘(fdiskmkfs)

    前言 在Ubuntu下一般使用fdisk这个工具来格式化u盘,至于格式化u盘的原因必然是因为u盘本身的系统在需要使用人的机器上不能识别,例如window无法识别GPT文件系统的u盘,这也是我一个同事今 ...

  3. linux怎么配置ftp服务,Ubuntu下安装、配置FTP服务

    续根据前两篇 http://www.linuxidc.com/Linux/2011-09/42775.htm 与 http://www.linuxidc.com/Linux/2011-09/42777 ...

  4. linux 安装jre和jdk,Ubuntu下安装JDK/JRE及问题的解决

    由于license的原因,Ubuntu的发行版中不在包含Oracle(Sun)Java 6了,取而代之的是OpenJDK,这是Ubuntu默认的java版本,也是最易于安装. 但是偏偏有些应用特意强调 ...

  5. 联想v360安装linux双系统,V360在WIN7下安装XP双系统完美运行攻略.doc

    V360在WIN7下安装XP双系统完美运行攻略 一准备工作1.准备安装工具:由于我们V360没有光驱,所以首先你准备一个USB光驱和XP系统安装盘,或者一个能启动电脑的U盘和一个XP系统的光盘镜像,我 ...

  6. 系统运维 | Ubuntu 下安装配置 samba 服务的详细过程

    本文首发于 2014-08-05 10:14:48 1. Samba作用 Samba的主要任务就是实现Linux系统和Windows系统之间的资源共享.我们现在是要在Linux下配置Samba,让Wi ...

  7. linux安装深度播放器,Ubuntu下安装深度音乐播放器Dmusic

    昨天尝试了Deepin 2014 alpche测试版本,除了Deepin自身做得很好外,深度原生的程序也很棒,包括深度媒体播放软件,深度视频.深度音乐,今天在我的Ubuntu系统上安装了Dmusic, ...

  8. linux源码阅读神器,Ubuntu下安装LXR Linux源代码阅读利器

    1.安装apache2 sudo apt-get install apache2 2.安装lxr sudo apt-get install lxr 3. 在/etc/apache2/httpd.con ...

  9. linux 安装flash tar.gz,ubuntu下安装flash(tar.gz格式)

    由于很多linux系统都是缺少flash插件的,想看个熊猫直播都看不了,赶紧装一个才行. 第一步,下载安装包 当然是进入官网 啦,选择 .tar.gz for linux ,然后点击download ...

最新文章

  1. 【每日一算法】单词接龙
  2. java postdelayed_你真的懂Handler.postDelayed()的原理吗?
  3. Mysql 索引原理及优化
  4. layui上传报错会有哪些原因_数据丢失如何恢复?哪些原因会导致数据丢失
  5. 软件架构设计学习总结(14):大型网站技术架构(八)网站的安全架构
  6. python模拟app抢票_python并发编程多进程 模拟抢票实现过程
  7. 基于IdentityServer的系统对接微信公众号
  8. 预期的异常规则和模拟静态方法– JUnit
  9. VC6中使用内存DC加载并显示JPG图片的注意事项
  10. Vue中生成二维码的一种方式—vue-qr
  11. 日志,错误日志,成功日志,日志是个好东西。
  12. php页面生成html页面显示,把当前显示的动态PHP页面静态化,生成HTML文件
  13. SAP License:实施SAP Business One-企业获得了哪些业务价值
  14. Scrapy分布式原理及Scrapy-Redis源码解析(待完善)
  15. 编写 iPhone Friendly 的 Web 应用程序 (Part 6 - iUI)
  16. spring 视频教程
  17. 我的世界java版forge怎么用_我的世界forge怎么安装
  18. dnf加点模拟器最新版85级版
  19. Origin中画折线图实现双X轴和双Y轴(双坐标轴)
  20. Pta题目集: 电话聊天狂人 (25 分)

热门文章

  1. (阿里云笔记)贝勾置阿里云轻量应用服务器CentOS7.6镜像——Linux系统
  2. C++函数与结构体——哥德巴赫猜想
  3. Visual Studio Code编辑器设置字号和行间距详细步骤
  4. 前端条码打印方案(表格+中文+一维码+二维码)
  5. EAUML日拱一卒-为类添加操作和方法
  6. 破解你的选择困难症——综合评价分析法
  7. 做一款属于自己的“签名设计软件”,外行玩儿过都说牛逼
  8. mysql创建存储过程及函数详解
  9. SQL Server中,删除表,删除表中数据
  10. # Revit2017二次开发遇到的调试问题