valgrind是GPL軟件,用於LINUX系統的內存調試和代碼分析,可以在代碼中監視內存的使用情況,比如C語言中的malloc和free,c++中的new和delete
使用valgrind可以檢查內存和線程中的BUG。
valgrind包含許多工具,比如memcheck ,cachegrind,helgrind,callgrind,massif
memcheck主要檢查以下錯誤
1.使用未初始化的內存
2.使用已經釋放的內存
3.使用超過malloc分配的內存空間
4.對堆棧的非法訪問
5.申請的空間是否有釋放
6.malloc/free和new/delete是否匹配
7.src/dst的重疊
cachegrind的功能
它模擬CPU的緩存,能夠精確的指出程序的內存的丟失和命中,如果需要還能為我們提供cache的丟失次數
helgrind為我們分析多線程中出現的問題,比如競爭,鎖定等狀態
massif堆棧分析器
它能測量程序在堆棧區中使用了多少內存,它告訴我們堆管理塊,棧大小,堆塊大小
valgrind的使用
適用於Memcheck工具的相關選項:
-leak-check=no|summary|full 要求對leak給出詳細信息? [summary]
-leak-resolution=low|med|high how much bt merging in leak check [low]
-show-reachable=no|yes show reachable blocks in leak check? [no]
作者“舞者博客”