日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

關(guān)于Linux操作系統(tǒng)下內(nèi)存泄漏的檢查方法

;1. 在需要內(nèi)存泄漏檢查的代碼的開始調(diào)用void mtrace(void) (在mcheck.h中? 有聲明). mtrace為malloc等函數(shù)安裝hook, 用于記錄內(nèi)存分配信息.在需要內(nèi)存泄漏檢查的代碼的結(jié)束調(diào)用void muntrace(void). 注意: 一般情況下不要調(diào)用muntrace, 而讓程序自然結(jié)束. 因?yàn)榭赡苡行┽尫艃?nèi)存代碼要到muntrace之后才運(yùn)行. 2. 用debug模式編譯被檢查代碼(-g或-ggdb) 3. 設(shè)置環(huán)境變量MALLOC_TRACE為一文件名, 這一文件將存有內(nèi)存分配信息. 4. 運(yùn)行被檢查程序, 直至結(jié)束或muntrace被調(diào)用. 5. 用mtrace命令解析內(nèi)存分配Log文件($MALLOC_TRACE) (mtrace foo $MALLOC_TRACE, where foo is the executible name) 如果有內(nèi)存泄漏, mtrace會(huì)輸出分配泄漏 內(nèi)存的代碼位置,以及分配數(shù)量. 附加說明 1. 可以將mtrace, muntrace放入信號(hào)處理函數(shù)(USR1, USR2), 以動(dòng)態(tài)地進(jìn)行內(nèi)存泄漏檢查控制. 2. mtrace是個(gè)perl代碼, 如果你對(duì)符號(hào)地址與代碼文本的轉(zhuǎn)換感興趣, 可以讀一下. 3. again, 盡量不要用muntrace() For CLeak: 檢查內(nèi)存泄漏的方法除glibc提供外;還可以試試一些專用的程序 。很奇怪,redhat 9 居然不帶mtrace perl腳本,只好下載gcc源碼編譯了 wget --passive-ftp ftp://rpmfind.net/linux/redhat/9 ... -2.3.2-11.9.src.rpm rpm -ivh glibc*.src.rpm cd /usr/src/redhat/SPECS/ rpmbuild -ba glibc-9.spec cd /var/tmp/glibc-2.3.2-root/usr/bin/ cp mtrace /usr/bin/ 調(diào)試方法如下: vi a.c 1 #include 2 3 int main() 4 { 5 mtrace(); 6 malloc(10); 7 malloc(16); 8 return 0; 9 } $gcc -g a.c #記得編譯帶-g調(diào)試選項(xiàng) $export MALLOC_TRACE=a.log $./a.out $unset MALLOC_TRACE #記得執(zhí)行完后unset變量,否則可能運(yùn)行其他命令可能覆蓋log $mtrace a.out a.log Memory not freed: ----------------- Address Size Caller 0x09b08378 0xa at /XXX/a.c:6 0x09b08388 0x10 at /XXX/a.c:7 可以看到,會(huì)顯示未釋放動(dòng)態(tài)空間的代碼具體位置 。

    推薦閱讀