kernel debug:

来源:互联网 发布:求质数的算法 编辑:程序博客网 时间:2024/05/21 09:54
 

kernel debug:
I think you also need to pass the boot arg "early_printk" as well to see the early debug output.
You might also try passing "initcall_debug".  Or it could be "debug_initcall".  One of those should provide more detailed information about what initcall is crashing (if the kernel init gets that far).

cat System.map | grep __log_buf
c046684c b __log_buf

这里我们看到log_buf的内存地址在c0535fdc,这是个虚拟地址,根据kernel地址映射规律,从MEM_PHY_START到MEM_PHY_END,都会一一映射到0xc0000000: (0xc0000000 + MEM_PHY_SIZE),因此假设我们内存的物理地址起始是0x0,那么这里log_buf的实际物理地址为0x00535fdc。

c046684c => 8046684c
md 8046684c 800

804670bc - 8046684c = 870

870 /4 ~= 220
 
VTH # md 8046684c 220
8046684c: 4c3e353c 78756e69 72657620 6e6f6973    <5>Linux version
8046685c: 362e3220 2e32332e 642d3731 6e697661     2.6.32.17-davin
8046686c: 20316963 40697428 676e617a 20297465    ci1 (ti@zanget)

//...

 

1>Unable to
80466ffc: 6e616820 20656c64 6e72656b 70206c65     handle kernel p
8046700c: 6e696761 65722067 73657571 74612074    aging request at
8046701c: 72697620 6c617574 64646120 73736572     virtual address
8046702c: 63313020 30653137 313c0a30 6467703e     01c71e00.<1>pgd
8046703c: 63203d20 34303030 0a303030 5b3e313c     = c0004000.<1>[
8046704c: 37633130 30306531 702a205d 303d6467    01c71e00] *pgd=0
8046705c: 30303030 0a303030 493e303c 7265746e    0000000.<0>Inter
8046706c: 206c616e 6f727265 4f203a72 3a73706f    nal error: Oops:
8046707c: 5b203520 205d3123 45455250 0a54504d     5 [#1] PREEMPT.
8046708c: 6c3e303c 20747361 66737973 69662073    <0>last sysfs fi
8046709c: 203a656c 3e343c0a 75646f4d 2073656c    le: .<4>Modules
804670ac: 6b6e696c 69206465 3c0a3a6e 50433e34    linked in:.<4>CP
804670bc: 30203a55 20202020 20746f4e 6e696174    U: 0    Not tain
VTH #

原创粉丝点击