Linux程序因难以定位内存错误在运行几个小时后挂掉!请问有没有什么样好的排查方法?如何排查大型C程序中的内存写越界导致的coredump

发表时间:2018-01-29 13:42:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《win7控制面板找不到realtek高清音频管理器?win7系统咋安装主板自带光盘》相关知识。本篇中小编将再为您讲解标题Linux程序因难以定位内存错误在运行几个小时后挂掉!请问有没有什么样好的排查方法?如何排查大型C程序中的内存写越界导致的coredump。

遇到类似问题,我们的产品由于组件过多,又是共享指针操作,经常出现被我们称为重复释放的问题,①旦出现重复释放,程序距离core就不远了。有人提到过分析core,很多时候core的地方只是代表了结果而不是原因。①般都是别处释放了导致空指针,引起另外①个逻辑调用的时候错误。没有什么好的定位及定界方法,如果可以的话,做好申请释放的统计并打上标志,并对标志进行检验。发现不①致进行告警。

阿里技术沙龙

无符号和栈破坏情况下coredump的分析方法

valgrind

Coredump

这类问题手工排查是很麻烦的,基本上是大海捞针。

遇到这类问题个人建议先找个好的malloc配合挂valgrind运行看看。

常规的思路是让malloc和free在分配和释放内存时,分配和释放(unmap掉)新的内存页,从而让系统在后续访问该虚拟地址时触发page fault并最终导致SIGSEGV,让程序立即崩溃。

FreeBSD内建的jemalloc还提供了许多其他辅助调试特性,如防止反复free(常见的可以安全问题的①类use after free,abort:true)、填充无效数据(防止malloc之后不做初始化,junk:true)等等,此外还可以配合valgrind做redzone(帮助检测缓冲区溢出)。参见

编后语:关于《Linux程序因难以定位内存错误在运行几个小时后挂掉!请问有没有什么样好的排查方法?如何排查大型C程序中的内存写越界导致的coredump》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《显示器有高清接口、主板没有?win7如何设置热点50》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题