切换到宽版
  • 7258Read
  • 3Replay

如何gdb 调试内存被踩的bug?请高手详细说明下 [复制链接]

上一主题 下一主题
离线andysw
 

只看楼主 倒序阅读 使用道具 楼主  posttime: 2017-03-12
如何gdb 调试内存被踩的bug?请高手详细说明下,谢谢!
离线showstopper

只看该作者 沙发  posttime: 2017-03-17
Hi  Andy,

这个问题比较宽泛,而内存被踩是系统工程师遇到最多的问题。
需要分多种情况来讨论:

1、代码段被踩。将代码段设置为read only,再次被踩时会抛出一个panic。
2、slub分配的内存被踩。打开slub的debug功能,被踩时会抛出panic或警告。
3、 有的时候将被踩区域dump出来,会发现其内容可能是字符串或者比较规律的数字,这种情况可以将字符串在全局代码或者log中搜索,定位出错代码。

暂时想到这么多,欢迎补充。
离线andysw

只看该作者 板凳  posttime: 2017-03-17
回 showstopper 的帖子
showstopper:Hi  Andy,
这个问题比较宽泛,而内存被踩是系统工程师遇到最多的问题。
需要分多种情况来讨论:
....... (2017-03-17 11:31) 

hi showstopper,

         谢谢你的回复,另外问下能否就你说的第一种或第二种情况举个例子或上传个资料看下分析过程
离线showstopper

只看该作者 地板  posttime: 2017-03-20
回 andysw 的帖子
andysw:hi showstopper,
         谢谢你的回复,另外问下能否就你说的第一种或第二种情况举个例子或上传个资料看下分析过程 (2017-03-17 14:46) 

不好意思,刚看到。

第一二种情况只是kernel中的两个debug宏开关,没有太多技术含量。前提是你要判断被踩的是哪一块的内存(是否是代码段或者slub)。
第三种情况其实是比较通用的,一般内存被踩,需要架构相关的dump机制(比如intel的coredump、mtk的ramdump等等),将当时现场(软硬件上下文)恢复,然后进一步分析。

以上。
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个