如果没有符号信息,如何使用GDB for x86汇编设置断点?

时间:2016-08-17 12:24:21

标签: debugging x86 gdb nasm gnu

当没有符号信息时,如何使用GDB for x86汇编代码设置断点,即无法写入<Directory "c:/wamp/www/"> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Allow from all Allow from 127.0.0.1 </Directory>

我想立即停止执行,但编写b *_start并不是很有用,因为这会停止在地址b *0执行,但我需要在地址{{1}处中断执行相对于起点(当没有符号信息时,它是未知的)。

1 个答案:

答案 0 :(得分:4)

使用objdump -f之类的内容显示入口点地址的数值。或inside gdb, info files will show you the entry point.

将该值复制/粘贴到gdb命令中:b *0x...以在入口点处中断。然后你可以从那里单步。

另请参阅标记wiki的底部,了解一些asm-debugging提示,例如layout reg

objdump -f的示例输出:

/bin/ls:     file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0000000000404870          <<---- copy this address

而不是找到入口点地址

当gdb尝试设置断点时,

b *0将导致错误。这导致在任何指令执行之前在入口点停止。删除虚假断点(当您尝试单步或继续时,它将继续出错)。  Stopping at the first machine code instruction in GDB