亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

操作系統(tǒng)

教你如何檢查inux操作系統(tǒng)的內(nèi)存

時間:2025-05-15 14:56:16 操作系統(tǒng) 我要投稿
  • 相關(guān)推薦

教你如何檢查inux操作系統(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é)束. 因為可能有些釋放內(nèi)存代碼要到muntrace之后才運行.

  2. 用debug模式編譯被檢查代碼(-g或-ggdb)

  3. 設(shè)置環(huán)境變量MALLOC_TRACE為一文件名, 這一文件將存有內(nèi)存分配信息.

  4. 運行被檢查程序, 直至結(jié)束或muntrace被調(diào)用.

  5. 用mtrace命令解析內(nèi)存分配Log文件($MALLOC_TRACE)

  (mtrace foo $MALLOC_TRACE, where foo is the executible name)

  如果有內(nèi)存泄漏, mtrace會輸出分配泄漏

  內(nèi)存的代碼位置,以及分配數(shù)量.

  附加說明

  1. 可以將mtrace, muntrace放入信號處理函數(shù)(USR1, USR2), 以動態(tài)地進行內(nèi)存泄漏檢查控制.

  2. mtrace是個perl代碼, 如果你對符號地址與代碼文本的轉(zhuǎn)換感興趣, 可以讀一下.

  3. again, 盡量不要用muntrace()

  For C++ Leak:

  檢查內(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)試選項

  $export MALLOC_TRACE=a.log

  $./a.out

  $unset MALLOC_TRACE #記得執(zhí)行完后unset變量,否則可能運行其他命令可能覆蓋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

  可以看到,會顯示未釋放動態(tài)空間的代碼具體位置。

【教你如何檢查inux操作系統(tǒng)的內(nèi)存】相關(guān)文章:

操作系統(tǒng)內(nèi)存優(yōu)化的攻略總結(jié)03-27

Windows XP操作系統(tǒng)內(nèi)存性能優(yōu)化06-03

Android操作系統(tǒng)的內(nèi)存回收的策略是什么12-18

Java內(nèi)存是如何劃分的03-30

電腦內(nèi)存如何搭配06-01

內(nèi)存故障如何檢測07-31

如何擴大電腦內(nèi)存08-09

如何學習操作系統(tǒng)12-08

舊電腦內(nèi)存如何升級03-14