valgrind是執行在linux上一套基於**技術的程式除錯和分析工具,它包含乙個核心──乙個軟體合成的cpu,和一系列的小工具,每個工具都可以完成一項任務──除錯,分析,或測試等。valgrind可以檢測記憶體洩漏和記憶體違例,還可以分析cache的使用等,靈活輕巧而又強大,能直穿程式錯誤的心臟,真可謂是程式設計師的瑞士軍刀。
valgrind工具包包含多個工具,如memcheck,cachegrind,helgrind,callgrind,massif。下面分別介紹個工具的作用:
memcheck
工具主要檢查下面的程式錯誤:
callgrind收集程式執行時的一些資料,函式呼叫關係等資訊,還可以有選擇地進行cache模擬。在執行結束時,它會把分析資料寫入乙個檔案。callgrind_annotate可以把這個檔案的內容轉化成可讀的形式。
cachegrind
它模擬 cpu中的一級快取i1,d1和l2二級快取,能夠精確地指出程式中 cache的丟失和命中。如果需要,它還能夠為我們提供cache丟失次數,記憶體引用次數,以及每行**,每個函式,每個模組,整個程式產生的指令數。這對優化程式有很大的幫助。
helgrind
它主要用來檢查多執行緒程式中出現的競爭問題。helgrind 尋找記憶體中被多個執行緒訪問,而又沒有一貫加鎖的區域,這些區域往往是執行緒之間失去同步的地方,而且會導致難以發掘的錯誤。helgrind實現了名為」 eraser」 的競爭檢測演算法,並做了進一步改進,減少了報告錯誤的次數。
massif
堆疊分析器,它能測量程式在堆疊中使用了多少記憶體,告訴我們堆塊,堆管理塊和棧的大小。massif能幫助我們減少記憶體的使用,在帶有虛擬記憶體的現代系統中,它還能夠加速我們程式的執行,減少程式停留在交換區中的機率
valgrind的使用非常簡單,valgrind命令的格式如下:
valgrind [valgrind-options]your-prog [your-prog options]
一些常用的選項如下:
-h --help
顯示幫助資訊。
--version
顯示valgrind核心的版本,每個工具都有各自的版本。
-q --quiet
安靜地執行,只列印錯誤資訊。
-v --verbose
列印更詳細的資訊。
--tool= [default: memcheck]
最常用的選項。執行valgrind中名為toolname的工具。如果省略工具名,預設執行memcheck。
--db-attach= [default: no]
繫結到偵錯程式上,便於除錯錯誤。
我們通過例子看一下它的具體使用。我們構造乙個存在記憶體洩漏的c程式,如下:
#include
#include
int*test(void)
intmain(void)
$ gcc -wall -o test test.c
$ valgrind --tool=memcheck ./ test
$valgrind --tool=memcheck --leak-check=yes ./test
$:sudo apt-get install valgrind
Valgrind工具的使用
本文參考自 一 valgrind介紹 valgrind是執行在linux上一套基於 技術的程式除錯和分析工具,它的主要作者是獲得過google o reilly開源大獎的julian seward,它包含乙個核心 乙個軟體合成的cpu,和一系列的小工具,每個工具都可以完成一項任務 除錯,分析,或測試...
valgrind工具的使用
valgrind是一款用於記憶體除錯 記憶體洩漏檢測以及效能分析 檢測線程錯誤的軟體開發工具。valgrind 是執行在linux 上的多用途 剖析和記憶體除錯軟體。主要包括memcheck callgrind cachegrind 等工具,每個工具都能完成一項任務除錯 檢測或分析。可以檢測記憶體洩...
pythonpip使用方法 pip使用方法整理
匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...