国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Linux 下面使用 mtrace 來檢查一般的程序的內(nèi)存溢出

2019-11-17 05:39:43
字體:
供稿:網(wǎng)友

  對(duì)于內(nèi)存溢出之類的麻煩可能大家在編寫指針比較多的復(fù)雜的程序的時(shí)候就會(huì)碰到。Debug起來也是比較累人。其實(shí)linux系統(tǒng)下有一個(gè)使用的工具可以幫忙來調(diào)試的,這就是mtrace。Mtrace主要能夠檢測(cè)一些內(nèi)存分配和泄漏的失敗等。下面我們來學(xué)習(xí)一下它的用法。

使用mtrace來調(diào)試程序有4個(gè)基本的步驟,需要用到GNU C 函數(shù)庫(kù)里面的一些輔助的函數(shù)功能。

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

下面我們看一個(gè)例子:

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

int main()
{
char *hello;
mtrace();
hello = (char*) malloc(20);
sreturn 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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临武县| 鄂温| 法库县| 古田县| 新巴尔虎右旗| 正蓝旗| 巴彦淖尔市| 万州区| 赤城县| 远安县| 张家口市| 西乌珠穆沁旗| 平谷区| 时尚| 靖宇县| 涿鹿县| 班戈县| 通化县| 应城市| 甘南县| 右玉县| 泾源县| 报价| 大洼县| 丹阳市| 长兴县| 利辛县| 贡山| 疏勒县| 民丰县| 蕲春县| 东城区| 绥宁县| 双桥区| 共和县| 平远县| 英超| 河北省| 女性| 塔河县| 庆安县|