Linux下用Mtrace来检查程序内存溢出

just疯静

just疯静

2016-01-29 17:59

Linux下用Mtrace来检查程序内存溢出,Linux下用Mtrace来检查程序内存溢出

对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。

使用Mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/linux/)

1. 在需要跟踪的程序中需要包含头文件,而且在main()函数的最开始包含一个函数调用:mtrace()。由于在main函数的最开头调用了mtrace(),所以该进程后面的一切分配和释放内存的操作都可以由mtrace来跟踪和分析。

2. 定义一个环境变量,用来指示一个文件。该文件用来输出log信息。如下的例子:

$export MALLOC_TRACE=mymemory.log

3. 正常运行程序。此时程序中的关于内存分配和释放的操作都可以记录下来。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/linux/)

4. 然后用mtrace使用工具来分析log文件。例如:

$mtrace testmem $MALLOC_TRACE

下面是具体一个例子,大家可以看一下。

[hwang@langchao test]$ cat testmtrace.c#include #include #include int main(){        char *hello;        mtrace();        hello = (char*) malloc(20);        sprintf(hello,"hello 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.logMemory not freed:-----------------Address Size Caller0x08049860 0x14 at /usr/src/build/53700-i386/BUILD/glibc-2.2.4/csu/init.c:0
展开更多 50%)
分享

猜你喜欢

Linux下用Mtrace来检查程序内存溢出

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux下用Mtrace来检查程序内存溢出

Linux 下面使用 mtrace 来检查一般的程序的内存溢出

编程语言 网络编程
Linux 下面使用 mtrace 来检查一般的程序的内存溢出

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VB邮件检查程序(一)

编程语言 网络编程
VB邮件检查程序(一)

VB邮件检查程序(二)

编程语言 网络编程
VB邮件检查程序(二)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Linux系统下用DCOP连接KDE应用程序

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux系统下用DCOP连接KDE应用程序

解析Linux系统下的高端内存

服务器
解析Linux系统下的高端内存

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何补上Linux缺乏应用软件的不便之处

如何补上Linux缺乏应用软件的不便之处

Photoshop初学者实例教程:背景橡皮抠出朵朵云彩

Photoshop初学者实例教程:背景橡皮抠出朵朵云彩
下拉加载更多内容 ↓