Linux常用系统分析工具-内存

  • A+
所属分类:网络技术

valgrind

valgrind 是在Linux程序中广泛使用的调试应用程序。它尤其擅长发现内存管理的问题,可以检查程序运行时的内存泄漏问题等。我们在使用valgrind时也主要用到它的内存泄漏检测功能,即memcheck功能。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用。

因此memcheck工具能够探测到以下问题:

1、使用未初始化的内存;

2、读/写已经被释放的内存;

3、读/写内存越界;

4、读/写不恰当的内存栈空间;

5、内存泄漏;

6、使用malloc/new/new/new[]和free/delete/delete[]不匹配。

src和dst的重叠valgrind的可选的参数以及对应的含义如下所示:

-version:显示valgrind内核的版本、每个工具都有各自的版本;

q -quit:安静的运行,只打印错误信息;

v -verbose:更详细的信息,增加错误数统计;

-trace-children=no|yes:跟踪子线程;

-track-fds=no|yes:增加时间戳到LOG信息;

-log-fd=<number>:输出LOG到描述符文;

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

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

-log-file-qualifier=<VAR>:取得环境变量的值来作为输出信息的文件名;

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

 

LOG信息输出:

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

-num-callers=<number> show <number> callers in stack traces [12];

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

-error-exitcode=<number>:如果发现错误则返回错误代码 [0=disable];

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

-db-command=<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]

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

Linux常用系统分析工具-内存

 

示例(这个示例是从网上找的、看了半天没看懂到底该怎么用、有知道的可以留言告诉下、感谢):

valgrind --leak-check=

full /usr/local/app/taf/tafnode/data/TenFortune.WeChatProxySvr/bin/WeChatProxySvr

--config=

/usr/local/app/taf/tafnode/data/TenFortune.WeChatProxySvr/conf/TenFortune.WeChatProxySvr.config.conf -trace-child=yes

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: