admin管理员组文章数量:1130349
使用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/docs/manual/mc-manual.html
使用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/docs/manual/mc-manual.html
版权声明:本文标题:valgrind排查内存泄漏步骤 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1758623953a2782036.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论