linux 分析段错误,Linux的段错误原因分析.doc

Linux的段错误原因分析.doc

Linux的段错误原因分析

这是一次启动从内核中打印的消息

[ 19.820000] SysManage: unhandled page fault (11) at 0x43a8b4d8, code 0x017

[ 19.820000] pgd = c0aa0000

[ 19.820000] [43a8b4d8] *pgd=80b16031, *pte *ppte[ 19.820000]

[ 19.820000] Pid: 234, comm: SysManage

[ 19.820000] CPU: 0 Tainted: P (2.6.31 #7)

[ 19.820000] pc : [<40235ae4>] lr : [<40053d6c>] psr:[ 19.820000] sp : bedf8a30 ip : 40235ae0 fp : bedf8b1c

[ 19.820000] r10: bedf8a70 r9 : 40024e00 r8 :[ 19.820000] r7 : 000000e0 r6 : 4005d2a0 r5 : 4005d1c0 r4 : 4005d260

[ 19.820000] r3 : r2 : 40021ab4 r1 : r0 : 43a8b490

[ 19.820000] Flags: nZCv IRQs on FIQs on Mode USER_32 ISA ARM Segment user

[ 19.820000] Control: 0005317f Table: 80aa0000 DAC:[ 19.820000] Function entered at [] from []

[ 19.820000] r5:43a8b4d8 r4:c0c5e640

[ 19.820000] Function entered at [] from []

[ 19.820000] r7:c09d3c34 r6:c0b14160 r5:c0c5e640 r4[ 19.820000] Function entered at [] from []

[ 19.820000] Function entered at [] from []

[ 19.820000] Exception stack(0xc0b0ffb0 to 0xc0b0fff8)

[ 19.820000] ffa0: 43a8b49040021ab4

[ 19.820000] ffc0: 4005d260 4005d1c0 4005d2a0 000000e040024e00 bedf8a70 bedf8b1c

[ 19.820000] ffe0: 40235ae0 bedf8a30 40053d6c 40235ae4ffffffff

[ 124.120000] g_serial gadget: high speed config #2: CDC ACM config

上面显示SysManage程序出现了unhandled page fault错误,下面给出的堆栈信息不充分,必须在用户空间打出该进程的调用堆栈才好定位问题。

要使内核打印出相关消息,需要修改一些配置。

make menuconfig

中配置

Kernel Hacking

[*] Verbose user fault messages

从boot启动内核时传入参数user_debug=0xff。

从以上内核的堆栈消息是通过__do_user_fault打印的,看一下其中控制打印的代码:

#ifdef CONFIG_DEBUG_USER

if (user_debug & UDBG_SEGV) {

printk(KERN_DEBUG "%s: unhandled page fault (%d) at 0x%08lx, code 0x%03x\n",

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值