嵌入式軟體記憶體洩露工具mtrace使用方法

2021-07-11 21:12:28 字數 2897 閱讀 5141

mtrace

是乙個有效的工具來檢視有沒有記憶體洩漏。它會將記憶體出現的異常記錄在日誌中,而日誌的路徑是可以指定的。

使用mtrace

來除錯程式有

4個基本的步驟,需要用到

gnuc

函式庫裡面的一些輔助的函式功能。 1

.在需要跟蹤的程式中需要包含標頭檔案

,而且在

main()

函式的最開始包含乙個函式呼叫:

mtrace()

。由於在

main

函式的最開頭呼叫了

mtrace()

,所以該程序後面的一切分配和釋放記憶體的操作都可以由

mtrace

來跟蹤和分析。2.

定義乙個環境變數,用來指示乙個檔案。該檔案用來輸出

log資訊。如下的例子:

$export malloc_trace=mymemory.log3.

正常執行程式。此時程式中的關於記憶體分配和釋放的操作都可以記錄下來。4.

然後用mtrace

使用工具來分析

log檔案。例如:

1. 

#include

<

stdio.h

>

2. 

#include

<

stdlib.h

>

3. 

#include

<

mcheck.h

>

4. 

#include

<

assert.h

>

5. 

6. 

intmain

()

7. 

mtrace

會將記憶體情況記錄下來,記錄的結果存在什麼地方呢?由環境變數malloc_trace決定。所以實際上有兩種設定環境變數的方法,一種情況就是**中體現的:

1

、setenv函式設定環境變數 malloc_trace

setenv("malloc_trace","./malloc.log",1)

2

、shell設定環境變數malloc_trace

exportmalloc_trace=~/program/c/mem_check/memcheck.log

1. 

root@libin:~/program/c/mem_bug#gcc -o test test.c -g

2. 

root@libin:~/program/c/mem_bug#./test

3. 

root@libin:~/program/c/mem_bug#ll

4. 

總用量 28

5. 

drwxr-xr-x 2root root 4096 2012-04-03 12:17 ./

6. 

drwxr-xr-x 36root root 4096 2012-04-03 12:01 ../

7. 

-rw-r--r-- 1root root 155 2012-04-03 12:17 malloc.log

8. 

-rwxr-xr-x 1root root 8550 2012-04-03 12:17 test*

9. 

-rw-r--r-- 1root root 208 2012-04-03 12:17 test.c

10.

root@libin:~/program/c/mem_bug# mtrace ./test malloc.log

11.

- 0x09a68008 free 3 was never alloc'd 0x1da8ef

12.

- 0x09a68028 free 4 was never alloc'd 0x1da8f7

13.

14.

memory not freed:

15.

-----------------

16.

address size caller

17.

0x09a683b0 0x190 at /home/libin/program/c/mem_bug/test.c:11

注意:由於嵌入式linux下沒有mtrace工具,故可以將生成的log檔案拷貝到demo所在的共享目錄下來使用mtrace工具檢視。

Linux C 程式設計記憶體洩露檢測工具 mtrace

所有使用動態記憶體分配 dynamic memory allocation 的程式都有機會遇上記憶體洩露 memory leakage 問題,在linux裡有三種常用工具來檢測記憶體洩露的情況,包括 mtrace dmalloc memwatch mtrace是三款工具之中是最簡單易用的,mtrac...

嵌入式工具 tcpdump

tcpdump是非常強大的網路安全分析工具,可以將網路上截獲的資料報儲存到檔案以備分析。可以定義過濾規則,只截獲感興趣的資料報,以減少輸出檔案大小和資料報分析時的裝載和處理時間。版本 libpcap 1.4.0 和 tcpdump 4.4.0 編譯方法 上述需要的兩個包要解壓在同乙個目錄下,先編譯l...

嵌入式記憶體布局

從事手機平台研發也有一年多了,總結了一下有關手機記憶體方面的知識希望對新手有所裨益。如果有高手路過檢視之餘如有紕漏之處還請不吝賜教 說明 傳統 燒機 流程將軟體燒錄到flash中,軟體bootloader部分在nor flash中,軟體的其他部分燒錄到nand flash 強調一點 上圖左邊部分是f...