Valgrind的使用方法

2021-06-27 06:08:14 字數 1657 閱讀 5507

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 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...