GDB TUI:在当前指令上方滚动装配视图?

Chu*_*k R 11 assembly gdb

我最近才开始使用GDB,但我对它印象深刻.难怪它是许多用户的事实上的调试器.然而,我发现的一个小烦恼是我发现自己无法在TUI装配视图中滚动当前指令之上.只要显示缓冲区位于当前指令下方,我就可以向上和向下滚动.

除了类似的东西x/20i [address](哪种类似于可滚动窗口的目的)或通过跳转改变内存并设置后续断点之外,有没有办法告诉TUI程序集视图查看可能位于其上方的另一个位置(较低内存比)当前的指令?

编辑:这似乎只在附加到已经运行的进程时发生,而不是在使用gdb启动进程时.有时我可以向上滚动直到当前指令,有时我无法向上滚动.

dbr*_*nk0 5

正如您所解释的,gdb tui中的滚动程序集似乎存在某种问题,但是存在一个简单的解决方法。

因此,首先通过按ctrl + x ctrl + a启用tui和反汇编视图。然后通过输入layout asm或类似内容来显示反汇编视图。

现在,窗口应该可以让您用键或鼠标滚动,但是如果它停止了(对我而言,有时发生在某些功能的开始),请输入通常的反汇编命令,反汇编视图将更新到该位置。

例:

调解主
调解0x1234

  • 对我不起作用 =( disass 抱怨给定地址的功能缺失。 (2认同)

ibo*_*odi 5

我发现了一个小技巧。如果您处于layout asmmode 并且无法滚动到当前指令,则可以执行命令layout split,然后layout asm第一行将是当前指令。

  • IIRC,如果您向下滚动并且无法向上滚动,那么“frame 0”可以返回到当前指令吗?不幸的是,如果不是在带有符号的函数内部,GDB 不会像当前 RIP 那样滚动回已知的起点。 (2认同)