我最近刚刚开始使用GDB,但我对此印象非常深刻。难怪它是许多用户的事实上的调试器。但是,我发现的一个小烦恼是,我发现自己无法在TUI装配视图中滚动当前指令之上。只要显示缓冲区在当前指令下面,我就可以向上和向下滚动。
除了x/20i [address]
(哪种类似于可滚动窗口的目的)或通过跳转改变内存并设置后续断点之外,是否有任何方法可以告诉TUI程序集视图另一个位置可能高于(低于当前指令的内存)?
编辑:这似乎只在附加到已经运行的进程时发生,而不是在使用gdb启动进程时发生。有时我可以向上滚动直到当前指令,有时我无法向上滚动。
答案 0 :(得分:5)
像你解释的那样在gdb tui中滚动程序集似乎存在某种问题,但存在一个简单的解决方法。
因此,首先按ctrl + x ctrl + a启用tui和disassembly视图。然后通过输入布局asm或类似的东西来显示反汇编视图。
现在窗口应该让你用键或鼠标滚动,但如果它停止(对于我有时会在某些功能开始时发生)输入通常的反汇编命令,反汇编视图将更新到该位置。
示例:
主持人 disass 0x1234
答案 1 :(得分:1)
我发现了一个小东西。如果您处于layout asm
模式,并且无法滚动到当前指令,则可以执行命令layout split
,然后执行layout asm
,第一行将是当前行。