• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用mtrace檢查內存溢出

    發表于:2007-05-25來源:作者:點擊數: 標簽:mtrace溢出對于內存檢查
    對于內存溢出之類的麻煩可能大家在編寫指針比較多的復雜的程序的時候就會遇到。De bug 起來也是比較累人。其實 linux 系統下有一個使用的工具可以幫忙來調試的,這就是mtrace。Mtrace主要能夠檢測一些內存分配和泄漏的失敗等。下面我們來學習一下它的用法。
    對于內存溢出之類的麻煩可能大家在編寫指針比較多的復雜的程序的時候就會遇到。Debug起來也是比較累人。其實linux系統下有一個使用的工具可以幫 忙來調試的,這就是mtrace。Mtrace主要能夠檢測一些內存分配和泄漏的失敗等。下面我們來學習一下它的用法。

    使用mtrace來調試程序有4個基本的步驟,需要用到GNU C 函數庫里面的一些輔助的函數功能。

    1. 在需要跟蹤的程序中需要包含頭文件<mcheck.h>,而且在main()函數的最開始包含一個函數調用:mtrace()。由于在 main函數的最開頭調用了mtrace(),所以該進程后面的一切分配和釋放內存的操作都可以由mtrace來跟蹤和分析。
    2. 定義一個環境變量,用來指示一個文件。該文件用來輸出log信息。如下的例子:
    $export MALLOC_TRACE=mymemory.log
    3. 正常運行程序。此時程序中的關于內存分配和釋放的操作都可以記錄下來。
    4. 然后用mtrace使用工具來分析log文件。例如:
    $mtrace testmem $MALLOC_TRACE

    下面我們看一個例子:

    [hwang@langchao test]$ cat testmtrace.c
    #include <mcheck.h>
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    char *hello;
    mtrace();
    hello = (char*) malloc(20);
    sprintf(hello,"nhello world!");
    return 1;
    }
    [hwang@langchao test]$export MALLOC_TRACE=mytrace.log
    [hwang@langchao test]$ gcc testmtrace.c -o testmtrace
    [hwang@langchao test]$./testmtrace
    [hwang@langchao test]$ mtrace testmtrace mytrace.log

    Memory not freed:
    -----------------
    Address Size Caller
    0x08049860 0x14 at /usr/src/build/53700-i386/BUILD/glibc-2.2.4/csu/init.c:0

    http://www.ddvip.net/program/c/jq/73.htm

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>