admin管理员组

文章数量:1532216

  1. 使用valgrind启动程序

    valgrind /path/to/your_program <your_program_args>

    valgrind 默认启动memcheck工具,也就是我们用来排查内存泄漏的工具

  2. 如果你的程序是一个后端服务,给你的服务发请求。适当多发一些请求,这样如果有内存泄漏的话,会更明显。

  3. 结束你的程序,可以ctrl + c,或者kill -2,总之让你的程序退出

  4. 观察valgrind的输出,重点关注LEAK SUMMARY信息,例如:

    ==9599== LEAK SUMMARY:
    ==9599== definitely lost: 5,000 bytes in 100 blocks
    ==9599== indirectly lost: 0 bytes in 0 blocks
    ==9599== possibly lost: 0 bytes in 0 blocks
    ==9599== still reachable: 0 bytes in 0 blocks
    ==9599== suppressed: 0 bytes in 0 blocks

    对于LEAK SUMMARY,我们需要特别关注的是definitely lost数据,这意味着明确的内存泄漏,可以给valgrind增加--leak-check=full开关查看泄漏详情。

    关于definite lostindirectly lostpossibly loststill reachable的识别,valgrind是通过检测是否还有指针指向内存block来判断的。

    四种类型的详细描述及更多的valgrind memcheck参数可参见:http://valgrind/docs/manual/mc-manual.html

本文标签: 步骤内存valgrind