Valgrind記憶體管理工具

2021-07-14 01:48:50 字數 2187 閱讀 9747



記憶體管理是軟體開發中最為重要的環境,如果乙個長期執行的程式,即使其中的某個函式每一次洩露1kb的記憶體空間,該函式每1分鐘呼叫100次,100天後,將產生60*24*10*1kb=1.44gb的記憶體空間,對於一般系統來說,其實早已處於宕機的狀態。如何能夠檢視這種記憶體洩露呢,可以使

用valgrind記憶體管理工具。

一:valgrind簡介

valgrind是一款用於記憶體除錯、記憶體洩漏檢測以及效能分析的軟體開發工具。

最初作者是julian seward,他於2023年由於在開發valgrind上的工作獲得了第二屆google-o'reilly開源**獎。

遵守gnu通用公共許可證條款,是一款自由軟體。此工具由核心(core)以及基於核心的其他除錯工具組成。核心類似於乙個框架,模擬了乙個cpu環境,並提供服務給其他工具:而其他工具則類似於外掛程式,

利用核心提供的服務完成各種特定的記憶體除錯任務。valgrind的體系結構如下圖所示:

valgrind包括以下工具:

1.memcheck探測程式中記憶體管理存在的問題。它檢查所有對記憶體的讀/寫操作,並擷取所有的malloc/new/free/delete呼叫,因此memcheck工具能夠探測到以下問題:

(1)使用為初始化的記憶體。

(2)讀/寫已經被釋放的記憶體。

(3)讀/寫不恰當的記憶體空間。

(4)讀寫記憶體越界。

(5)記憶體洩露。

(6)使用malloc/new/new和free/delete/delete不匹配。

(7)src和dst的重疊

2.callgrind它主要用來檢查程式中函式呼叫過程中出現的問題。 

3.cachegrind它主要用來檢查程式中快取使用出現的問題。 

4.helgrind它主要用來檢查多執行緒程式中出現的競爭問題。 

5.massif它主要用來檢查程式中堆疊使用中出現的問題。 

6.extension可以利用core提供的功能,自己編寫特定的記憶體除錯工具。 

valgrind可以使用原始碼安裝,也可以使用軟體包更新方法,在ubuntu系統下,可以使用一下命令跟新:

sudo apt-get install valgrind

或#wget /downloads/valgrind-3.8.1.tar.bz2

#tar xvf valgrind-3.8.1.tar.bz2

#cd valgrind-3.8.1

#./configure --prefix=/usr/local/webserver/valgrind

#make

#make install

三:valgrind常用選項

表3-2~表3-5列出了了常用選項:

四:測試**

**如下:

編譯

#gcc -g -o bug bug.c

記憶體檢查

#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./bug

報告:

IT專案管理工具

一 完善的專案管理工具,需要具有如下的管理模組 1.需求管理 專案的需求變更,跟蹤,控制 2.資源管理 專案的可利用的資源 人力,物力,財力 3.計畫管理 包括成員管理和許可權分配,日程排定,工作時間管理,里程碑設定 4.進度管理 日曆,工作流,專案路線圖和gantt圖 5.測試管理 專案軟體缺陷b...

SQLCE管理工具

如果你是做dotnet開發,同時在找sqlce桌面 嵌入式資料庫的管理工具,那麼database.net。另外,既然你是做dotnet開發,又選擇了sqlce資料庫,那麼你肯定對比過sqlite資料庫,他們的對比,我在其他文章寫過 個人經驗,不是很全面,僅供參考 如果要在sqlite和sqlce中間...

mysql管理工具

innochecksum 輸出innodb檔案的校驗碼,這個工具讀取innodb表空間檔案,計算每個頁的校驗值,跟儲存的進行比較,報告損壞的頁的資訊,主要是加快驗證掉電後貨是拷貝後表空間檔案的一致性,這個工具在5.6.16版本之前只支援2gb的檔案。該工具不能用在服務已經開啟的表空間檔案上,這種情況...