使用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排查內存泄漏步驟
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.