怎样看bt -f的数据

来源:互联网 发布:淘宝350装修模板安全吗 编辑:程序博客网 时间:2024/05/08 23:47

bt -f

PID: 2159   TASK: d5256e20  CPU: 1   COMMAND: "m.android.phone"
 #0 [<c063d51c>] (__raw_spin_lock_irqsave) from [<c063d568>]
    [PC: c063d51c  LR: c063d568  SP: d406d958  SIZE: 32]
    d406d958: 00000000 d406da80 d406c018 ffffffff
    d406d968: d406d984 d406d978 c063d568 c063d498
 #1 [<c063d568>] (__raw_spin_lock_irq) from [<c063d584>]
    [PC: c063d568  LR: c063d584  SP: d406d978  SIZE: 16]
    d406d978: d406d994 d406d988 c063d584 c063d55c
 #2 [<c063d584>] (_raw_spin_lock_irq) from [<c00713ec>]
    [PC: c063d584  LR: c00713ec  SP: d406d988  SIZE: 16]
    d406d988: d406d9c4 d406d998 c00713ec c063d578
 #3 [<c00713ec>] (die) from [<c0071600>]
    [PC: c00713ec  LR: c0071600  SP: d406d998  SIZE: 48]
    d406d998: d406d9c4 d406d9a8 c063d4cc d406da80
    d406d9a8: c08dc0ac ffffffff 00000000 00000f00
    d406d9b8: d406d9d4 d406d9c8 c0071600 c00713c0
 #4 [<c0071600>] (arm_notify_die) from [<c0066170>]
    [PC: c0071600  LR: c0066170  SP: d406d9c8  SIZE: 16]
    d406d9c8: d406da7c d406d9d8 c0066170 c00715b0
 #5 [<c0066170>] (do_undefinstr) from [<c006cb44>]
    pc : [<c08dc0ac>]    lr : [<c0091b68>]    psr: 28000193
    sp : d406dac8  ip : ffdff020  fp : d406dadc
    r10: 00000001  r9 : 68000193  r8 : c0917620
    r7 : 00000003  r6 : f8157450  r5 : c0479f74  r4 : 00000001
    r3 : c08dc080  r2 : f8157000  r1 : f8157454  r0 : c0479f74
    Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM
    [PC: c0066170  LR: c006cb44  SP: d406d9d8  SIZE: 168]
    d406d9d8: 00000006 00000000 00000004 00000000
    d406d9e8: 00030001 c08dc0ac c0975d32 ffffffff
    d406d9f8: 00000001 00000000 d406da34 d406da10
    d406da08: c02b1f74 c02b1dbc c0975d32 ffffffff
    d406da18: d406da5e 00000002 c09760fd 0000000a
    d406da28: d406dacc d406da38 c02b34bc c02b1f48
    d406da38: c063d170 ffffffff c173a9c0 c0973b40
    d406da48: 00000000 00000000 00000001 00000000
    d406da58: 00000000 00310000 ffffffff d406dab4
    d406da68: d406c050 00000001 d406dadc d406da80
    d406da78: c006cb44 c006600c
 #6 [<c006cb44>] (__und_svc) from [<c0091b68>]
    [PC: c006cb44  LR: c0091b68  SP: d406da80  SIZE: 72]
    d406da80: c0479f74 f8157454 f8157000 c08dc080
    d406da90: 00000001 c0479f74 f8157450 00000003
    d406daa0: c0917620 68000193 00000001 d406dadc
    d406dab0: ffdff020 d406dac8 c0091b68 c08dc0ac
    d406dac0: 28000193 ffffffff

一帧的各部分什么意思、所说的一帧是怎样解释的,原始数据是什么?

所说的一帧是从PC开始的,依次LR,SP,FR,所有的帧都是以这4个寄存器开头,知道这个格式stack的内容是很容易看明白的。

#1[<c063d568>] (__raw_spin_lock_irq) from [<c063d584>]

[PC:c063d568 LR: c063d584 SP: d406d978 SIZE: 16]

d406d978:d406d994 d406d988 c063d584c063d55c

PC:c063d568 :当该函数运行时对应的PC值

LR:c063d584:当该函数压栈时对应的LR

SP:d406d978:当该函数运行时对应的SP.

注意这里显示的内容并不完全对应栈里保存的内容。

0xc063d550<__raw_spin_lock_irq>: mov r12, sp

0xc063d554<__raw_spin_lock_irq+4>: push{r11,r12, lr, pc}[入栈的顺序是从右侧开始]

压入栈的PC值是当前的PC+8.(0xc063d554+8=0xc063d55c)

0xc063d558<__raw_spin_lock_irq+8>: sub r11, r12, #4

0xc063d55c<__raw_spin_lock_irq+12>: push {lr}

0xc063d560<__raw_spin_lock_irq+16>: pop {lr}

0xc063d564<__raw_spin_lock_irq+20>: bl 0xc063d48c<__raw_spin_lock_irqsave>

0xc063d568<__raw_spin_lock_irq+24>: ldm sp, {r11, sp, pc}

总结:

1. 每帧包含三部分:

 #1 [<c063d568>] (__raw_spin_lock_irq) from [<c063d584>]
    [PC: c063d568  LR: c063d584  SP: d406d978  SIZE: 16]
    d406d978: d406d994 d406d988 c063d584 c063d55c

 1] <pc> (called location) from (LR)

 2] PC /LR/ SP: SIZE

 3] raw data from low address to high

2. 什么样的数据会保存到 stack中?

看代码保存什么数据到stack中。

0xc063d550<__raw_spin_lock_irq>: mov r12, sp

0xc063d554<__raw_spin_lock_irq+4>: push{r11,r12, lr, pc}[入栈的顺序是从右侧开始]


0 0
原创粉丝点击