|
内核panic。
klogd提示出问题部分地址的EPC,但没有给出出问题的函数
dump内核,得到汇编代码,查找出问题部分的EPC地址,发现是在task_action部分。
于是感觉问题在内核调度task_action,但是应该是由于用户空间程序编写不当导致的吧,因为修改过某用户程序后bug会消失及变化。
现在想加printk调试都不知道怎么样,在哪里入手好。因为是嵌入式系统的内核,也无法用其它工具来调试。
查看<LDD>第三版内核调试部分,同样给出了这样的例子,但并没有提示如何定位的问题,而只是说明了怎么样来定位有提示出错函数的方法。
对于没有给出出错的函数的内核当掉,到底应该怎么样定位好呢?
请各位指教一下。
$0 : 00000000 1000fc01 9421f080 00000000 9421f0e0 95fd6000 1000fc01 ffff00ff
$8 : 95fd7fe0 0000fc00 9421f040 94fa1ee8 00000000 fffffff8 94fa1d83 95c63c00
$16: c00f6168 9421f0e0 c00f6168 942278a0 00000001 9421f080 9421f0c0 402100ce
$24: 00000000 2ab82240 95fd6000 95fd7f40 02000000 9403c92c
Hi : 00000000
Lo : 00000c00
epc : 9403cf10 Not tainted
Status: 1000fc03
Cause : 10800008
Process ksoftirqd_CPU0 (pid: 3, stackpage=95fd6000)
Stack: 94e10800 00000000 95fd6000 95fd7f70 00000001 9421f0e0 ffffffef ffffffef
1000fc01 942278a0 9403c92c 10800400 00000001 00000000 942278a0 00000001
942278a0 00000001 00010f00 00000000 238118da 40609240 04253190 9403d494
04253190 941b6ed0 00000000 00000000 9403d3e4 00000000 94029f1c 95fd7fe0
02000000 94211a34 00989680 00000000 94029f0c 00000000 1000fc03 10800020
80fddec8 ...
Call Trace: [<9403c92c>] [<9403d494>] [<941b6ed0>] [<9403d3e4>] [<94029f1c>] [<9
4029f0c>]
Code: 3c139422 267378a0 02408021 <8e110008> 16200015 8e520000 c2030004 0074
1025 00541026
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing |
|