objdump -d -l

前言

接上篇《addr2line》,本篇文章使用 objdump 来定位出错代码位置。

objdump -d -l

$ /home/liyongjun/project/board/buildroot/Vexpress_4.15/host/bin/arm-buildroot-linux-gnueabihf-objdump -d -l file.kofile.ko:     file format elf32-littlearmDisassembly of section .text.unlikely:00000000 <hello_init>:
hello_init():
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:120:   e92d40f0        push    {r4, r5, r6, r7, lr}
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:194:   e3a04000        mov     r4, #0
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:178:   e3000000        movw    r0, #0c:   e3400000        movt    r0, #0
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:1210:   e24dd00c        sub     sp, sp, #12
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:1714:   ebfffffe        bl      0 <printk>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:1918:   e3a03064        mov     r3, #100        ; 0x64
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:211c:   e3a02f69        mov     r2, #420        ; 0x1a4
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:1920:   e5843000        str     r3, [r4]
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:2124:   e3a01042        mov     r1, #66 ; 0x4228:   e3000000        movw    r0, #02c:   e3400000        movt    r0, #030:   ebfffffe        bl      0 <filp_open>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:2234:   e3700a01        cmn     r0, #4096       ; 0x100038:   9a000004        bls     50 <hello_init+0x50>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:233c:   e3000000        movw    r0, #040:   e3400000        movt    r0, #044:   ebfffffe        bl      0 <printk>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:2448:   e3e00000        mvn     r0, #04c:   ea000018        b       b4 <hello_init+0xb4>50:   e1a05000        mov     r5, r0
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:2854:   e1a0300d        mov     r3, sp58:   e3a02006        mov     r2, #65c:   e3001000        movw    r1, #060:   e3401000        movt    r1, #0
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:2764:   e3a06000        mov     r6, #068:   e3a07000        mov     r7, #06c:   e1cd60f0        strd    r6, [sp]
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:2870:   ebfffffe        bl      0 <kernel_write>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:3174:   e3a02009        mov     r2, #978:   e1a0300d        mov     r3, sp7c:   e1a00005        mov     r0, r580:   e3001000        movw    r1, #084:   e3401000        movt    r1, #0
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:3088:   e1cd60f0        strd    r6, [sp]
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:318c:   ebfffffe        bl      0 <kernel_read>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:3290:   e3001000        movw    r1, #094:   e3401000        movt    r1, #098:   e3000000        movw    r0, #09c:   e3400000        movt    r0, #0a0:   ebfffffe        bl      0 <printk>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:34a4:   e1a01004        mov     r1, r4a8:   e1a00005        mov     r0, r5ac:   ebfffffe        bl      0 <filp_close>
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:36b0:   e1a00004        mov     r0, r4
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:37b4:   e28dd00c        add     sp, sp, #12b8:   e8bd80f0        pop     {r4, r5, r6, r7, pc}000000bc <cleanup_module>:
hello_exit():
/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:40bc:   e3000000        movw    r0, #0c0:   e3400000        movt    r0, #0c4:   eafffffe        b       0 <printk>

代码报错位置是在偏移 0x20 处

/home/liyongjun/project/board/buildroot/override/Vexpress_4.15/file/file.c:1920:   e5843000        str     r3, [r4]

从 objdump 显示信息可以看到,0x20 偏移处为 C 代码的第 19 行。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部