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

2016-02-19 12:34 60 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的Linux 下面使用 mtrace 来检查一般的程序的内存溢出,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】


  对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会碰到。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,"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.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.tulaoshi.com/n/20160219/1601196.html

延伸阅读
广告文化的核心不在于文化,而是在于用文化的手段达到广告的目的。广告文化的核心就是用文化进行商业说服,因为它必须要服从广告产品宣传者的意志。 广告是广告产品宣传者在付费的基础上,通过大众传媒的方式,经由说服来推销自己的产品和劳务的传播行为。在这里说服是一个关键因素,可以认为说服是一切广告的核心,其他的一...
标签: 生活常识
一般来例假前白带是多还是少? 一般来例假前白带是多还是少? 首先:女性在月经到来之前的白带数量是多是少的问题是需要因人而异的,有的人可能会白带增多的。也有的人会白带减少的。 其次:一般月经前的24-48小时,白带稍多,介乎于透明粘液和白色之间,直到月经来血。 最后:月经前白带增多,是由于经期子宫颈口逐渐扩张,宫颈管内...
标签: 宠物 宠物猫
1、全球年龄最大的喵星人已经有31岁了,据悉猫咪的寿命一般在18—20岁之间,但是这只猫咪竟然已经超出平均寿命十一年了,并且相当于人类141岁,这让人觉得太不可思议了。 2、全球年龄最大的喵星人已经有31岁了,据悉猫咪的寿命一般在18—20岁之间,但是这只猫咪竟然已经超出平均寿命十一年了,让人觉得太不可思议了,动物与人类不...
流产经验分享 图钉问: 流产 一般几天流的干净 图老师答: 自然流产一般一周左右就可以干净了,最多不超过半个月。在流产以后,把排除的胚胎组织进行保留,送到医院让医生给您看一下胚胎组织是否完整。 流产半个月左右或一直出血不止的时候,应该及时到医院做个彩超看看内膜的状况。不完全流产是需要手术清理子宫腔,把残留的...
标签: 孕前检查
婚前检查与孕前检查的区别 说到孕前检查,我们都知道它是保证孕期母婴健康的最有力手段,其实能够对孕期母婴健康产生一定保证的并不只有孕前检查,还有婚前检查。自从强制的婚检取消之后,很多年轻的夫妻都不再进行Tulaoshi.com婚检了,只是在准备生育之前去进行一下孕前检查,这种做法不能说是完全错误,但至少也是不可取的。结婚生育...

经验教程

220

收藏

95
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部