gdb反汇编后的结果怎么看语句对应的地址
时间: 2023-11-18 16:04:23 浏览: 84
Linux-disa-gdb.rar_gdb_gdb disa
在gdb中反汇编函数或程序时,每一条汇编指令都会显示对应的地址。可以通过以下步骤查看语句对应的地址:
1. 在gdb中加载需要反汇编的程序或函数。
2. 使用命令“disassemble”或“disas”反汇编程序或函数。
3. 查找需要的语句,对应的地址通常在语句前面。
4. 如果需要查看特定地址的语句,可以使用命令“x/i <address>”查看该地址上的指令。
例如,假设我们要查看函数“test”的反汇编结果,并找到其中一条语句的地址。在gdb中,我们可以执行以下命令:
```
(gdb) disassemble test
Dump of assembler code for function test:
0x00000000004004c0 <+0>: push %rbp
0x00000000004004c1 <+1>: mov %rsp,%rbp
0x00000000004004c4 <+4>: movl $0x0,-0x4(%rbp)
0x00000000004004cb <+11>: movl $0x1,-0x8(%rbp)
0x00000000004004d2 <+18>: movl $0x2,-0xc(%rbp)
0x00000000004004d9 <+25>: mov -0x8(%rbp),%eax
0x00000000004004dc <+28>: mov -0xc(%rbp),%edx
0x00000000004004df <+31>: add %edx,%eax
0x00000000004004e1 <+33>: mov %eax,-0x10(%rbp)
0x00000000004004e4 <+36>: nop
0x00000000004004e5 <+37>: pop %rbp
0x00000000004004e6 <+38>: retq
End of assembler dump.
```
在反汇编结果中,每一条指令前面都有一个地址,例如第一条指令的地址是“0x00000000004004c0”。如果我们想要查看地址为“0x00000000004004df”处的指令,可以使用命令“x/i 0x00000000004004df”,结果应该是:
```
(gdb) x/i 0x00000000004004df
0x4004df: 01 d0 add %edx,%eax
```
阅读全文