在机器代码中查找位置(gcc/objdump -d)

Set*_*jmp 5 c gcc object-code objdump

如果您在计算机输出中考虑了特定的C代码行,那么如何在objdump输出中找到它.这是一个例子

if (cond)
   foo;
   bar();
Run Code Online (Sandbox Code Playgroud)

我想看看栏是否按照我的意愿内联.或者你会使用一些替代工具而不是objdump?

Joh*_*itb 7

您可以使用-S选项(如"objdump -Sd a.out")启动objdump .如果编译代码的源文件可用,它将显示与汇编代码混合的源代码.

或者,您可以使用以下方式:

int main(void) {
    int a = 0;
    asm("#");
    return a;
}
Run Code Online (Sandbox Code Playgroud)

       .file   "a.c"
        .text
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $16, %esp
        movl    $0, -8(%ebp)
#APP
# 3 "a.c" 1
        #
# 0 "" 2
#NO_APP
        movl    -8(%ebp), %eax
        addl    $16, %esp
        popl    %ecx
        popl    %ebp
        leal    -4(%ecx), %esp
        ret
        .size   main, .-main
        .ident  "GCC: (GNU) 4.3.2"
        .section        .note.GNU-stack,"",@progbits
Run Code Online (Sandbox Code Playgroud)

  • -S暗示-d.您不需要同时指定两者.:-P (2认同)