記憶體管理是軟體開發中最為重要的環境,如果乙個長期執行的程式,即使其中的某個函式每一次洩露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的檔案。該工具不能用在服務已經開啟的表空間檔案上,這種情況...