GDB用于消除动态加载的代码

时间:2017-07-20 10:00:39

标签: linux assembly x86 gdb

我正在动态加载二进制代码我想在汇编中使用GDB进行调试。

使用layout asm,在调试时我到达以下指令:

call *%eax

其中寄存器eax包含我已加载的二进制代码的地址以及我希望GDB进行调试的地址。每次我尝试通过stepi

进入下一条指令时,我都会收到以下信息
  

没有函数包含所选帧的程序计数器。

我已经在使用set disassemble-next-line on,它应该自动反汇编我进入的下一条指令。

我正在使用GDB 7.2。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用

disassemble $pc,+64
无论是否有调试信息,

(或其他一些小数而不是64)来查看下一个即将发出的指令。

layout asm应该自动执行此操作,因为它受到终端高度的隐式限制。这看起来像GDB错误/增强请求(但我已经在amd64上看到 GNU gdb(Debian 7.12-6)7.12.0.20161007-git 所需的行为。)