GDB常用命令简介

GDB常用命令简介

 

Trace32收费, GDB是免费软件,可以用来分析kernel exception等问题

例子:

(gdb) cd E:\CR\Hua\ALPS03716939\CPM2017092800062_20180116_ke_log\ke_log@机器1@db.fatal.03.KE

(gdb) file symbols/vmlinux Reading symbols from symbols/vmlinux...done.

(gdb) core SYS_MINI_RDUMP

[New LWP 102]

[New LWP 1]

[New LWP 2]

[New LWP 3]

[New LWP 4]

[New LWP 5]

[New LWP 6]

[New LWP 7]

[New LWP 8]

#0 __flush_dcache_area () at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/cache.S:164

164 /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/cache.S: No such file or directory.

(gdb) bt

Python Exception <type 'exceptions.ImportError'> No module named frames:

#0 __flush_dcache_area () at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/cache.S:164

#1 0xffffffc0000973ec in __sync_icache_dcache (pte=<optimized out>, addr=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/flush.c:82 #2 0xffffffc00019f578 in set_pte_at (mm=<optimized out>, pte=<optimized out>, ptep=<optimized out>, addr=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/include/asm/pgtable.h:2

#3 do_set_pte (vma=<optimized out>, address=4125929472, page=<optimized out>, pte=0xfffffff84526e658, write=<optimized out>, anon=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/mm/memory.c:2776

#4 0xffffffc00019f818 in do_read_fault (vma=0xffffffec2fa4e468, address=4125929472, pmd=<optimized out>, pgoff=<optimized out>, flags=<optimized out>, orig_pte=0, mm=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/mm/memory.c:2923

#5 0xffffffc0001a1574 in do_linear_fault (mm=<optimized out>, page_table=<optimized out>, orig_pte=<optimized out>, flags=<optimized out>, pmd=<optimized out>, address=<optimized out>, vma=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/mm/memory.c:3055

#6 handle_pte_fault (flags=<optimized out>, pmd=<optimized out>, pte=<optimized out>, address=<optimized out>, vma=<optimized out>, ---Type <return> to continue, or q <return> to quit--- mm=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/mm/memory.c:3220

#7 __handle_mm_fault (flags=<optimized out>, address=<optimized out>, vma=<optimized out>, mm=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/mm/memory.c:3347

#8 handle_mm_fault (mm=0xffffffd06a14ab40, vma=0xffffffec2fa4e468, address=4125929472, flags=40) at /mnt/zhaojunyao/L41_Test/kernel-3.18/mm/memory.c:3376

#9 0xffffffc000096d50 in __do_page_fault (tsk=<optimized out>, vm_flags=<optimized out>, mm_flags=<optimized out>, addr=<optimized out>, mm=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/fault.c:185

#10 do_page_fault (addr=4125929472, esr=2516582407, regs=0xffffffd80fbf3d20) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/fault.c:249

#11 0xffffffc000081294 in do_mem_abort (addr=4125929472, esr=2516582407, regs=0xffffffd80fbf3d20) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/fault.c:460

#12 0xffffffc000083c28 in el1_sync ()

(gdb) i r

x0 0xffffffe821d88000 -102511378432

x1 0xffffffe821d89000 -102511374336

x2 0x40 64

x3 0x3f 63

x4 0x200 512

x5 0x0 0

x6 0x61d88 400776

x7 0xffffffec2fa4e468 -85100010392

x8 0x8f513803 2404464643

x9 0xbe4780a8 3192357032

x10 0x3f965600 1066817024

x11 0x1df165c2 502359490

x12 0x234df2cd 592310989

x13 0x73a485ed 1940162029

x14 0x951e8376 2501804918

x15 0xe9c64b67 3922086759

x16 0x5172eccc 1366486220

x17 0xc6a35ee5 3332595429

x18 0xef6fc7dc 4017080284

x19 0xffffffbe015675c0 -283445398080

x20 0xfffffff84526e658 -33199561128

x21 0xf5ecb000 4125929472

x22 0x0 0

x23 0xffffffec2fa4e468 -85100010392 ---Type <return> to continue, or q <return> to quit---

x24 0x0 0

x25 0x0 0

x26 0xfffffff84526e000 -33199562752

x27 0xd78 3448

x28 0xffffffd01c073000 -205688197120

x29 0xffffffd80fbf3970 -171534501520

x30 0xffffffc0000973ec -274877287444

sp 0xffffffd80fbf3970 0xffffffd80fbf3970

pc 0xffffffc00009713c 0xffffffc00009713c <__flush_dcache_area+ 28>

cpsr 0x60000145 1610613061

fpsr <unavailable>

fpcr <unavailable>

(gdb) p $pc

$1 = (void (*)()) 0xffffffc00009713c <__flush_dcache_area+28>

(gdb) disassemble $pc

Dump of assembler code for function __flush_dcache_area:

0xffffffc000097120 <+0>: mrs x3, ctr_el0

0xffffffc000097124 <+4>: ubfx x3, x3, #16, #4

0xffffffc000097128 <+8>: mov x2, #0x4 // #4

0xffffffc00009712c <+12>: lsl x2, x2, x3

0xffffffc000097130 <+16>: add x1, x0, x1

0xffffffc000097134 <+20>: sub x3, x2, #0x1

0xffffffc000097138 <+24>: bic x0, x0, x3

=> 0xffffffc00009713c <+28>: dc civac, x0

0xffffffc000097140 <+32>: add x0, x0, x2

0xffffffc000097144 <+36>: cmp x0, x1

0xffffffc000097148 <+40>: b.cc

0xffffffc00009713c <__flush_dcache_area+ 28>

0xffffffc00009714c <+44>: dsb sy

0xffffffc000097150 <+48>: ret

End of assembler dump.

(gdb) disassemble 0xffffffc00009713c

Dump of assembler code for function __flush_dcache_area:

0xffffffc000097120 <+0>: mrs x3, ctr_el0

0xffffffc000097124 <+4>: ubfx x3, x3, #16, #4

0xffffffc000097128 <+8>: mov x2, #0x4 // #4

0xffffffc00009712c <+12>: lsl x2, x2, x3

0xffffffc000097130 <+16>: add x1, x0, x1

0xffffffc000097134 <+20>: sub x3, x2, #0x1

0xffffffc000097138 <+24>: bic x0, x0, x3

=> 0xffffffc00009713c <+28>: dc civac, x0

0xffffffc000097140 <+32>: add x0, x0, x2

0xffffffc000097144 <+36>: cmp x0, x1

0xffffffc000097148 <+40>: b.cc

0xffffffc00009713c <__flush_dcache_area+ 28>

0xffffffc00009714c <+44>: dsb sy

0xffffffc000097150 <+48>: ret

End of assembler dump.

(gdb) f 1

#1 0xffffffc0000973ec in __sync_icache_dcache (pte=<optimized out>, addr=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/flush.c:82 82 /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/flush.c: No such file or directory.

(gdb) up

#2 0xffffffc00019f578 in set_pte_at (mm=<optimized out>, pte=<optimized out>, ptep=<optimized out>, addr=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/include/asm/pgtable.h:220

220 /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/include/asm/pgtable.h: N o such file or directory.

(gdb) down

#1 0xffffffc0000973ec in __sync_icache_dcache (pte=<optimized out>, addr=<optimized out>) at /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/flush.c:82

82 /mnt/zhaojunyao/L41_Test/kernel-3.18/arch/arm64/mm/flush.c: No such file or directory.

(gdb) disass __sync_icache_dcache

Dump of assembler code for function __sync_icache_dcache:

0xffffffc00009734c <+0>: stp x29, x30, [sp,#-32]!

0xffffffc000097350 <+4>: ubfx x0, x0, #12, #36

0xffffffc000097354 <+8>: mov x1, #0xffbe00000000 // #2811 91508869120

0xffffffc000097358 <+12>: mov x29, sp

0xffffffc00009735c <+16>: str x19, [sp,#16]

0xffffffc000097360 <+20>: lsl x19, x0, #6

0xffffffc000097364 <+24>: sub x0, x19, x0, lsl #3

0xffffffc000097368 <+28>: movk x1, #0xffff, lsl #48

0xffffffc00009736c <+32>: add x19, x0, x1

(gdb) directory src

Source directories searched: E:\CR\Hua\ALPS03716939\CPM2017092800062_20180116 _ke_log\ke_log@1@db.fatal.03.KE/src;$cdir;$cwd

(gdb) list __sync_icache_dcache

69 void __sync_icache_dcache(pte_t pte, unsigned long addr)

70 {

71 struct page *page = pte_page(pte);

72

73 /* no flushing needed for anonymous pages */

74 if (!page_mapping(page))

75 return;

76

77 if (!test_and_set_bit(PG_dcache_clean, &page->flags)) {

78 __flush_dcache_area(page_address(page),

(gdb)

79 PAGE_SIZE << compound_order(page));

80 __flush_icache_all();

81 } else if (icache_is_aivivt()) {

82 __flush_icache_all();

83 }

84 }

(gdb) p page

$2 = (struct page *) 0xffffffbe015675c0

(gdb) x/16x 0xffffffbe015675c0

0xffffffbe015675c0: 0x02800201 0x00000000 0x7451f740 0xffffffd8

0xffffffbe015675d0: 0x00000000 0x00000000 0x00000000 0x00000002

0xffffffbe015675e0: 0x00000100 0x00000000 0x00000200 0x00000000

0xffffffbe015675f0: 0x00000000 0x00000000 0x00000080 0x00000000

(gdb) p {struct page}0xffffffbe015675c0

$6 = {flags = 41943553, {mapping = 0xffffffd87451f740,

s_mem = 0xffffffd87451f740}, {{index = 0, freelist = 0x0,

pfmemalloc = false}, {counters = 0, {{_mapcount = {counter = 0}, {

inuse = 0, objects = 0, frozen = 0}, units = 0}, _count = {

counter = 2}}, active = 0}}, {lru = {next = 0x100, prev = 0x200}, {

next = 0x100, pages = 512, pobjects = 0}, slab_page = 0x100,

callback_head = {next = 0x100, func = 0x200}}, {private = 0, ptl = {{

rlock = {raw_lock = {owner = 0, next = 0}}}}, slab_cache = 0x0,

first_page = 0x0}}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值