Linux系统-内存检测-valgrind操作入门

来源:互联网 发布:阿里云发短信 php代码 编辑:程序博客网 时间:2024/05/16 17:07

序言

Valgrind工具组提供了一套调试与分析错误的工具包,是在Linux中检查内存泄漏的工具。当程序编写完之后我一般都会使用它来检查一次内存问题。这些工具之中最有名的是Memcheck,能够识别很多C/C++程序中内存相关的错误。

使用Memcheck输出内存错误信息

  • valgrind - -leak-check=yes ./example
    • Memcheck是默认的工具,开启 –leak-check 选项会启动内存泄露检查
    • 程序运行起来速度比正常运行慢很多(数十倍),并且会使用更多内存
    • Memcheck偶尔也会出错,但绝大多数时候都不会出错
    • Memcheck不能够侦测所有内存错误,例如不能识别越界读、或者对分配到栈区的数组的越界写入。但是它能够识别导致程序崩溃的大多数错误

  • 说明
    • 13442是进程号
    • probably lost,可能存在内存泄漏
    • 在第一行之后紧跟的堆栈轨迹信息告诉你问题出现的位置
    • 程序函数 main(main.c:74)表明存在问题的程序位置

使用输出内存错误报告

  • valgrind - -log-file=./valgrind_report.log - -leak-check=full - -show-leak-kinds=all - -show-reachable=no - -track-origins=yes ./example

    • – -log-file
      • 指定报告输出文件
    • track-origins=yes
      • 是否显示未定义的变量,在堆、栈中被定义没有被initialised的变量都被定义成origins。默认是关闭这个option的。
    • show-leak-kinds=all
      • 这里可以支持的选项有[definite|possible],一般只需要去关注definite,possible是可能会存在。
    • leak-check=full
      • 当服务器退出时是否收集输出内存泄漏,选项有[no|summary|full]这个地方我们将其设置成全输出,默认将会使用summary方式。



Acknowledgements:
http://www.cnblogs.com/zhoudayang/p/6110360.html
http://blog.csdn.net/erlang_hell/article/details/51360149

2017.07.07

原创粉丝点击