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

2016-02-19 12:34 56 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

来源:https://www.tulaoshi.com/n/20160219/1601196.html

延伸阅读
标签: 生活常识
一般来例假前白带是多还是少? 一般来例假前白带是多还是少? 首先:女性在月经到来之前的白带数量是多是少的问题是需要因人而异的,有的人可能会白带增多的。也有的人会白带减少的。 其次:一般月经前的24-48小时,白带稍多,介乎于透明粘液和白色之间,直到月经来血。 最后:月经前白带增多,是由于经期子宫颈口逐渐扩张,宫颈管内...
标签: PHP
我发现很多的PHP程序员,尤其是学习还不是很久的,都不知道PHP的精华所在。Perl当年如何在商界出名?其强大的正则表达式。而PHP呢?他是一门从Unix下发展起来的语言,当然也就继承了Perl的很多特点,同时C的优点都有。快速、简洁、明了,尤其是C程序员,PHP是至爱,我就是深爱着PHP(都忘了女友了:))。这里,我想来写一篇PHP的变...
标签: 功效
吃小番茄的好处是什么? 小番茄的营养成分是很多的,比大的番茄营养更加多的,不但能是含有大量的维生素C的物质,还含有一些微量元素,吃了对身体的好处是很多的,还可以美容的效果,后期补血的效果也是不错的,但是小番茄的含有的糖分也是比较多的,不要一次性吃的太多的,最好是当做饭前的水果吃,平时可以当做水果吃,在饭后不要吃太多...
标签: 生活常识
一般视力是多少 一般视力是多少 第一方面:一般以双眼裸眼视力能达到标准对数视力表.0为正常。多种眼病都可以引起视力下降,如急性眼部感染分泌物过多造成视力模糊,角膜炎角膜水肿造成视物模糊,白内障晶状体混浊造成视物模糊等,还是要及时去检查的。 第二方面:一般人的视力都会在.0或以上,5岁以上的正常视力要达到.0(5.0)。如果...
一般乾麵酱 [原料/调料]蚝油1小匙香油少许葱花1大匙[制作流程](1)先将面条煮熟,将所有调味料搅拌均匀,倒入煮好的面条中,拌匀即可。材料:鸡蛋面一把、花生酱、小葱。 调料:老抽、盐、老酒、味精、花生油(要放到炒锅里红下!)。我们每天的日常除了工作,就是在吃饭睡觉中度过了吧!所以作为日常3大块之一,我觉得这个还是很重要的!所以小编教大家一...

经验教程

880

收藏

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