先前已在embedded system中porting過dmalloc,這次在ubuntu PC上也試著使用看看。

首先至 http://packages.ubuntu.com/zh-tw/source/raring/dmalloc 下載 dmalloc_5.5.2.orig.tar.gz

接著下 tar -zxvf dmalloc_5.5.2.orig.tar.gz 將之解壓縮。

開始安裝:

1、執行 ./configure 產生Makefile及其相依性檔案

2、「make」開始編譯

編譯完成後,會看到提示訊息。

3、我們就先安裝吧! 下 「sudo make intall」

4、接著在要檢查的Process中,加上dmalloc的header file。

5、對該檔案進行編譯,原先採用「gcc -ldmalloc -wall -g link-list.c -o link-list」進行編譯

但會出現以下錯誤,後來搜尋資料,發現應該要使用「gcc -Iinclude -Llib -DDMALLOC link-list.c -ldmalloc -o link-list」

進行編譯。

參考網址: http://stackoverflow.com/questions/9736589/ld-cannot-link-symbols-although-they-are-in-library

gcc -Iinclude -Llib -DDMALLOC link-list.c -ldmalloc -o link-list

接著一樣在console 下export DMALLOC_OPTIONS=log=/tmp/memory.txt,debug=0x3

或是也可以用指令dmalloc -i 1 -p log-stats -p log-non-free -l /tmp/memory.txt

或是下dmalloc all

接著就可以執行程式

以下可以看到當程式結束後,有一malloc leak,因此即可進行debug。

直到執行後是memory table is empty.即表示該進行memory free的都有做到了。

arrow
arrow
    文章標籤
    dmalloc memory leak programming
    全站熱搜

    Yisin 發表在 痞客邦 留言(0) 人氣()