当没有符号信息时,如何使用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}处中断执行相对于起点(当没有符号信息时,它是未知的)。
答案 0 :(得分:4)
使用objdump -f
之类的内容显示入口点地址的数值。或inside gdb, info files
will show you the entry point.
将该值复制/粘贴到gdb命令中:b *0x...
以在入口点处中断。然后你可以从那里单步。
另请参阅x86标记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
b *0
将导致错误。这导致在任何指令执行之前在入口点停止。删除虚假断点(当您尝试单步或继续时,它将继续出错)。
Stopping at the first machine code instruction in GDB