免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2139 | 回复: 8
打印 上一主题 下一主题

[内核模块] 关于内核debug的问题 [复制链接]

论坛徽章:
1
双子座
日期:2014-09-25 13:38:50
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-02 17:40 |只看该作者 |倒序浏览
在driver开发的过程中,遇到一个bug,一个结构体中定义的一个unsigned int型变量在运行的过程中被莫名其妙的修改了,在这个变量之前加上一个不使用的unsigned int型变量,问题就绕过去了, 我想要找到什么时候修改了变量的地方,该如何来debug呢? 另外仔细查看了这个结构体中的变量,都是对齐的

论坛徽章:
0
2 [报告]
发表于 2013-05-02 18:44 |只看该作者
试试kgdb

论坛徽章:
1
双子座
日期:2014-09-25 13:38:50
3 [报告]
发表于 2013-05-02 18:48 |只看该作者
kgdb可以在中断中设置断点吗?
回复 2# lenky0401


   

论坛徽章:
0
4 [报告]
发表于 2013-05-03 08:55 |只看该作者
数据断点数据断点

论坛徽章:
0
5 [报告]
发表于 2013-05-03 17:42 |只看该作者
回复 1# wjydlut
64bit? gcc版本? 今天看邮件里面有个64bit gcc的bug。你可以看看
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52080
   

论坛徽章:
1
双子座
日期:2014-09-25 13:38:50
6 [报告]
发表于 2013-05-06 19:15 |只看该作者
不是64,是32bit的arm

回复 5# xs3c


   

论坛徽章:
0
7 [报告]
发表于 2013-05-06 21:46 |只看该作者
回复 1# wjydlut


debug时,设置数据watchpoint;
是否改动了头文件中的该结构体,而没有重新编译所有引用改结构体的源文件;
如果结构体在堆栈中,看是否有堆栈溢出;
观察那个unsigned int变量被意外的改成了什么值,在看driver中有没有可疑的地方谢了这个值;
finally,看代码,使劲看,一边看还一边调,结合各种分析,推理,猜想...终于问题总能解决。

论坛徽章:
1
双子座
日期:2014-09-25 13:38:50
8 [报告]
发表于 2013-05-07 10:03 |只看该作者
被改变的变量所在的结构体是malloc动态生成的,这样数据断点貌似不好用?有没有别的更好的办法呢
回复 7# jinuxstyle


   

论坛徽章:
0
9 [报告]
发表于 2013-05-08 10:07 |只看该作者
如果是malloc得到的结构体变量,尝试改成全局变量呢?
这样如果不被修改,则需要考虑是否是堆栈越界了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP