使用valgrind启动程序
valgrind /path/to/your_program <your_program_args>
valgrind 默认启动memcheck工具,也就是我们用来排查内存泄漏的工具如果你的程序是一个后端服务,给你的服务发请求。适当多发一些请求,这样如果有内存泄漏的话,会更明显。
结束你的程序,可以ctrl + c,或者kill -2,总之让你的程序退出
观察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 lost
、indirectly lost
、possibly lost
、still reachable
的识别,valgrind是通过检测是否还有指针指向内存block来判断的。四种类型的详细描述及更多的valgrind memcheck参数可参见:http://valgrind.org/docs/manual/mc-manual.html
valgrind排查内存泄漏步骤
最新推荐文章于 2023-02-21 14:08:56 发布