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