Valgrind 是个开源的工具,功能很多。例如检查内存泄漏工具---memcheck。

安装:

1)官网下载:http://www.valgrind.org/downloads/ , 下载tar.bz2之后,可以传送到linux。更方便的是用linux的wget命令直接下载: wget ftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2,wget后面的下载地址,鼠标右击网站上的文件名,赋值链接即可。

2)tar -jxvf valgrind-3.13.0.tar.bz2

3)参照其README文件,按照指示安装:

To install from a tar.bz2 distribution:

  a. Run ./configure, with some options if you wish.  The only interesting one is the usual --prefix=/where/you/want/it/installed.

    我令prefix=/usr/local/valgrind3.13.0,这样所有的安装文件都在这个目录,卸载时只要删除这个文件即可。

  b. Run "make".

  c. Run "make install", possibly as root if the destination permissions require that.

  d. See if it works.  Try "valgrind ls -l".  Either this works, or it bombs out with some complaint.  In that case, please let us know

     (see www.valgrind.org).

安装完成后,在terminal能自动识别valgrind指令,应该是在安装过程中自动加入了环境变量吧,执行make install时要求我以root身份啦。

Important!  Do not move the valgrind installation into a place different from that specified by --prefix at build time.  This will

cause things to break in subtle ways, mostly when Valgrind handles fork/exec calls.

用法:

valgrind [options] prog-and-args

[options]: 常用选项,适用于所有Valgrind工具

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

memcheck ------> 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,  比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。

callgrind ------> 它主要用来检查程序中函数调用过程中出现的问题。

cachegrind ------> 它主要用来检查程序中缓存使用出现的问题。

helgrind ------> 它主要用来检查多线程程序中出现的竞争问题。

massif ------> 它主要用来检查程序中堆栈使用中出现的问题。

extension ------> 可以利用core提供的功能,自己编写特定的内存调试工具

-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=<number> 输出LOG到描述符文件 [2=stderr]

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

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

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

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

REF:

https://www.cnblogs.com/AndyStudy/p/6409287.html

Valgrind工具------可以分析内存泄漏的更多相关文章

  1. Atitit.提升稳定性-----分析内存泄漏PermGen OOM跟解决之道...java

    Atitit.提升稳定性-----分析内存泄漏PermGen OOM跟解决之道...java 1. 内存区域的划分 1 2. PermGen内存溢出深入分析 1 3. PermGen OOM原因总结 ...

  2. 使用Memory Analyzer tool(MAT)分析内存泄漏(二)

    转载自:http://www.blogjava.net/rosen/archive/2010/06/13/323522.html 前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那 ...

  3. 使用Memory Analyzer tool(MAT)分析内存泄漏

    前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那么字字斟酌.上周末回了趟成都办事,所以本文来迟了.K117从达州经由达成线往成都方向走的时候,发现铁路边有条河,尽管我现在也不知道 ...

  4. 【转】如何使用MAT分析内存泄漏

    原文链接:http://www.lightskystreet.com/2015/09/01/mat_usage/ MAT - Memory Analyzer Tool 使用进阶 Sep 1, 2015 ...

  5. 性能监控 | MAT分析内存泄漏

    使用MAT分析内存泄漏(二)八周年重印版 - 知乎 .u-safeAreaInset-top { height: constant(safe-area-inset-top) !important; h ...

  6. 使用androidstudio 分析内存泄漏

    分析内存泄漏 http://www.jianshu.com/p/c49f778e7acf

  7. 如何使用memstat 插件分析内存泄漏问题

    对于内存泄漏问题,如何分析并找到内存泄漏的原因是个难点.KingbaseES 提供了memstat 扩展插件用于分析内存泄漏的原因. 一.使用 memstat 插件 1.修改shared_preloa ...

  8. 使用Memory Analyzer tool(MAT)分析内存泄漏(一)

    转载自:http://www.blogjava.net/rosen/archive/2010/05/21/321575.html 前言 在平时工作过程中,有时会遇到OutOfMemoryError,我 ...

  9. android 中如何分析内存泄漏

    转载:http://blog.csdn.net/fulinwsuafcie/article/details/8363218 前提条件: 1,电脑安装了java 运行环境 2,手机端开启了 USB 调试 ...

随机推荐

  1. 2019暑期金华集训 Day7 动态规划

    自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...

  2. rocketMq和kafka的架构区别

    概述 其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比. 这篇博文主要讲清楚kaf ...

  3. Note_4.7

    2019/4/7 奇奇怪怪的笔记 狄利克雷卷积  \(μ∗1=ϵ\),莫比乌斯反演 \(Id=φ∗1⇒φ=μ∗Id\) \(d=1∗1⇒1=μ∗d\) \(σ=Id∗1⇒Id=μ∗σ\) \(σ=φ∗ ...

  4. Ubuntu16.04Apache负载均衡+集群

    mod_proxy ,主代理模块Apache模块用于重定向连接;它允许Apache充当底层应用程序服务器的网关.mod_proxy_http ,它增加了对代理HTTP连接的支持.mod_proxy_b ...

  5. [Linux] 启用win10下Linux子系统

    转载请注明出处:https://www.cnblogs.com/lialong1st/p/12004080.html 最新的win10引入了Linux子系统,这样就免去了安装虚拟机或者双系统的麻烦. ...

  6. vue+elementui搭建后台管理界面(5递归生成侧栏路由)

    有一个菜单树,顶层菜单下面有多个子菜单,子菜单下还有子菜单... 这时候就要用递归处理 1 定义多级菜单 修改 src/router/index.js 的 / 路由 { path: '/', redi ...

  7. delphi 运算符重载

    譬如上面的 record 可以这样声明: type   TMyRec = record     name: string;     age: Word;     class operator Grea ...

  8. iview3 版本 升级

    Button 废弃 type ghost,原先的 default 样式有改变. Icon 的图标升级至 ionicons 3.0 图标,图标名称有改变. Breadcrumb 废弃 href 属性. ...

  9. Navicat Premium连接MySQL 1251错误

    Navicat Premium连接MySQL 1251错误 MySQL Installer 8.0.17 ​ 出现上述错误的原因是版本MySQL 8.0.17即8.0开始的MySQL版本,因为采用新的 ...

  10. 【idea】断点调试时查看所有变量和静态变量

    转载至博客:https://blog.csdn.net/qq32933432/article/details/86672341 缘起 笔者在进行HashMap原理探索的时候需要在IntelliJ ID ...