valgrind是一款可用於檢測記憶體、分析函式呼叫的程式,程式內部可以**模擬指定的程序。
./configure --prefix=安裝路徑(只可用絕對路徑,安裝後不要手動移動目錄)
make
make install
成功安裝後,在 安裝路徑/bin 下可執行valgrind
valgrind --tool=可以選擇想用的工具。這裡介紹幾個可用工具
memcheck是記憶體檢測工具,可以檢測程式有無記憶體洩漏或是記憶體訪問錯誤
valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --trace-children=yes 目標解析檔案
如果知道程序id,也可以直接
valgrind --tool=memcheck --leak-check=full --trace-children=yes /proc/pid/exe
其中–trace-children=y選項表示要追蹤子執行緒。執行後會從main入口模擬執行一遍指定的程式,執行完後顯示有無錯誤。
圖中可以看到,申請兩次但只釋放了一次記憶體,說明有記憶體洩漏。同時標明了申請記憶體的call trace。
memcheck也可以用來檢測程序的執行堆疊。命令如下:
生成xtree的報告
valgrind --tool=memcheck --xtree-memory=full --xtree-memory-file=./xtmemory.kcg 目標檔案的路徑
callgrind檢視報告
callgrind_annotate --auto=yes --inclusive=yes --sort=curb:100,curbk:100,totb:100,totbk:100,totfdb:100,totfdbk:100 xtmemory.kcg
callgrind可以顯示目標檔案的函式呼叫關係。生成的分析檔案配合gprof2dot.py與dot可以生成
valgrind --tool=callgrind 目標解析檔案的路徑(這裡要用絕對路徑) 會生成乙個.out檔案
dot -tpng ***.dot -o ***.png dot轉換成png。如果生成失敗了,有可能是python版本不匹配,注意公升級或是切換版本
生成的呼叫關係圖如上
massif可用於分析堆疊記憶體的申請情況
valgrind --tool=massif --pages-as-heap=yes --xtree-memory=full --xtree-memory-file=./memtree.kcg --trace-children=yes 可執行檔案路徑
執行完畢後,會在當前目錄下生成乙個.out檔案,通過ms_print可檢視
Valgrind安裝與使用
valgrind是一款用於記憶體除錯 記憶體洩漏檢測以及效能分析的軟體開發工具。valgrind的最初作者是julian seward,他於2006年由於在開發valgrind上的工作獲得了第二屆google o reilly開源 獎。valgrind遵守gnu通用公共許可證條款,是一款自由軟體。官...
valgrind的安裝及簡單使用
sudo apt get install automake tar jxf valgrind 3.16.1.tar.bz2 cd valgrind 3.16.1 autogen.sh configure make sudo make install 期間可能遇到的問題 1 如果輸入.autogen....
Valgrind工具的使用
本文參考自 一 valgrind介紹 valgrind是執行在linux上一套基於 技術的程式除錯和分析工具,它的主要作者是獲得過google o reilly開源大獎的julian seward,它包含乙個核心 乙個軟體合成的cpu,和一系列的小工具,每個工具都可以完成一項任務 除錯,分析,或測試...