因此,我有一个已编译的程序,其中源仅部分可用,这意味着二进制文件比源更新。另外,二进制文件的优化值为1。然后,我在gdb中启动它,并反汇编诸如disassemble phase_1
之类的函数调用时,它会打印出这样的内容
0x0000000000400ec3 <+0>: sub $0x8,%rsp
0x0000000000400ec7 <+4>: mov $0x402550,%esi
0x0000000000400ecc <+9>: callq 0x401383 <strings_not_equal>
0x0000000000400ed1 <+14>: test %eax,%eax
0x0000000000400ed3 <+16>: je 0x400eda <phase_1+23>
0x0000000000400ed5 <+18>: callq 0x4015e7 <explode_bomb>
0x0000000000400eda <+23>: add $0x8,%rsp
0x0000000000400ede <+27>: retq
所以我想知道的是,如何在给定的程序集中设置断点,因为b 0x0000000000400ed3
不会中断。我假设0x0000000000400ed3
是指令的地址,所以如果不是这种情况,我怎么能找到指令的实际地址?