使用memwatch跟蹤linux記憶體洩漏

2021-08-07 07:10:54 字數 1299 閱讀 7265

參考:

根據log可以查詢出申請了卻沒有釋放記憶體的行號。

一、簡介

memwatch可以跟蹤程式中的記憶體洩漏和錯誤,能檢測雙重釋放(double-free)、錯誤釋放(erroneousfree)、沒有釋放的記憶體(unfreed memory)、溢位

(overflow)

、下溢(underflow)等。

解壓後,得到原始碼 memwatch.c 和 memwatch.h

二、安裝及使用

memwatch根本是不需要安裝的,因為它只是一組c程式**。需要做的是:

1、在**中加入 memwatch.c 和 memwatch.h,一起編譯、鏈結

2、編譯時定義巨集 dmemwatch、dmw_stdio,即在編譯程式時加上選項-dmemwatch-dmw_stdio

三、例子

int main(int argc,char **argv)

if((i%2) == 0)

}mwterm(); 

//執行memwatch的清除工作。當我們使用了mwinit()時,就必須使用該函式來終止memwatch的工作。

return 1; }

執行程式,會在當前目錄生產memwatch.log檔案,內容如下:

started at wed mar  

9 14:52:14 2016

modes: __stdc__ 64-bit mwdword==(unsigned long)

mwroundalloc==8 sizeof(mwdata)==32 mwdatasize==32

stopped at wed mar  

9 14:52:14 2016

unfreed: <9> ../main.c(26), 50 bytes at 0x855c3a0 

unfreed: <6> ../main.c(26), 50 bytes at 0x855c268 

unfreed: <1> ../main.c(20), 100 bytes at 0x855c1d0 

memory usage statistics (global):

n)umber of allocations made: 7

l)argest memory usage  

: 300

t)otal of all alloc() calls: 550

u)nfreed bytes totals  

: 200

參考進行修改**。

memwatch的使用(二)

2.3 分析日誌檔案 日誌檔案memwatch.log中包含的資訊主要有以下幾點 測試日期 狀態蒐集器 的資訊 使用 memwatch 的輸出函式或巨集 如trace等 的資訊。memwatch 捕獲的錯誤資訊 記憶體使用的全域性資訊統計,包括四點 1 分配了多少次記憶體 2 最大記憶體使用量 3 ...

Android Log日誌AS使用及Linux輸出

1 log.v tag,列印那些最為瑣碎的,意義最小的日誌資訊。對應級別verbose,是android 日誌裡面級別最低的一種。2 log.d tag,列印一些除錯資訊,這些資訊對你除錯程式和分析問題應該是有幫助的。對應級別debug,比 verbose 高一級。3 log.i tag,列印一些比...

windows使用ubuntu啟動linux服務

有些服務只能在linux中策馬奔騰,但是公司配置windows電腦,因此在windows中安裝ubuntu服務,再在啟動的ubuntu中啟動linux服務 系統 win10 其他系統沒試過 安裝步驟 1.檢查 網路和internet是否開啟 應該關閉 伺服器,否則無法開啟windows商店 2.在w...