免费注册 查看新帖 |

Chinaunix

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

[操作系统] 如何进行嵌入式内核调试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-21 14:32 |只看该作者 |倒序浏览
嵌入式linux裁剪后,运行过程中出现内核奔溃,如何能进行深入的跟踪和调试,直到找到问题根源;
我用strace ./testusart ;得出的信息也没有价值,进不到驱动层,只能反汇编了吗?
各位有什么好的思路,针对此类问题的解决?谢谢!


Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#1]
last sysfs file: /sys/devices/virtual/video4linux/video0/dev
Modules linked in:
CPU: 0    Not tainted  (2.6.39 #2)
PC is at atmel_tasklet_func+0x3d4/0x728
LR is at atmel_tasklet_func+0x138/0x728
pc : [<c01b13d8>]    lr : [<c01b113c>]    psr: 20000013
sp : cf223bf0  ip : c04b9ebc  fp : 00000000
r10: c04e5ee0  r9 : 0000000a  r8 : 00881202
r7 : c04ed464  r6 : 00071202  r5 : cf1f7d08  r4 : 00000000
r3 : 00000800  r2 : 00000000  r1 : d0880000  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: 2f228000  DAC: 00000015
Process api-ertu (pid: 508, stack limit = 0xcf222270)
Stack: (0xcf223bf0 to 0xcf224000)

论坛徽章:
0
2 [报告]
发表于 2013-01-31 19:47 |只看该作者
回复 1# tomsen2013


    最直接的方法是使用objdump工具,

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2013-02-08 20:47 |只看该作者
分析oops打印出来的trace
你这个很明显就是在atmel_tasklet_func函数里出错了,多半是使用了空指针,可以根据PC的地址,使用arm-linux-addr2line来把地址转换成文件名和行号

或者使用重量级的工具,kdump来抓取现场,然后用crash这个工具来看vmcore


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP