valgrind排查內存泄漏步驟

  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.org/docs/manual/mc-manual.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章