<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 操作系統

    教你如何檢查inux操作系統的內存

    時間:2025-05-15 14:56:16 操作系統 我要投稿
    • 相關推薦

    教你如何檢查inux操作系統的內存

      1. 在需要內存泄漏檢查的代碼的開始調用void mtrace(void) (在mcheck.h中? 有聲明). mtrace為malloc等函數安裝hook, 用于記錄內存分配信息.在需要內存泄漏檢查的代碼的結束調用void muntrace(void).

      注意: 一般情況下不要調用muntrace, 而讓程序自然結束. 因為可能有些釋放內存代碼要到muntrace之后才運行.

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

      3. 設置環境變量MALLOC_TRACE為一文件名, 這一文件將存有內存分配信息.

      4. 運行被檢查程序, 直至結束或muntrace被調用.

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

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

      如果有內存泄漏, mtrace會輸出分配泄漏

      內存的代碼位置,以及分配數量.

      附加說明

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

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

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

      For C++ Leak:

      檢查內存泄漏的方法除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/

      調試方法如下:

      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調試選項

      $export MALLOC_TRACE=a.log

      $./a.out

      $unset MALLOC_TRACE #記得執行完后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

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

    【教你如何檢查inux操作系統的內存】相關文章:

    操作系統內存優化的攻略總結03-27

    Windows XP操作系統內存性能優化06-03

    Android操作系統的內存回收的策略是什么12-18

    Java內存是如何劃分的03-30

    電腦內存如何搭配06-01

    內存故障如何檢測07-31

    如何擴大電腦內存08-09

    如何學習操作系統12-08

    舊電腦內存如何升級03-14

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人