我尝试使用lldbLLVM 调试器,但我已经习惯了gdb。因此,我正在寻找gdb与.info framelldb
我想显示有关当前帧的信息以及保存的寄存器(保存的程序计数器和保存的基指针)的位置。例如,显示以下信息info frame的命令:gdb
Stack level 0, frame at 0x7fffffffe090:
rip = 0x4004ba in main (example.c:6); saved rip = 0x7ffff7a54b45
source language c.
Arglist at 0x7fffffffe080, args:
Locals at 0x7fffffffe080, Previous frame's sp is 0x7fffffffe090
Saved registers:
rbp at 0x7fffffffe080, rip at 0x7fffffffe088
Run Code Online (Sandbox Code Playgroud)
没有一个命令可以一次性显示所有这些信息。其中一些您很容易获得,例如:
(lldb) frame variable -L
Run Code Online (Sandbox Code Playgroud)
将向您显示 args 和 locals 的位置 - 尽管它也会向您显示值。帧打印通常显示pc源信息,并且reg read sp会显示堆栈指针。或者您可以将fp&添加sp到常规框架格式中(有关更多详细信息,请参阅此页)。
有一个frame info命令可以显示当前帧的相当简单的视图。它当然可以扩展以显示更多此信息(可能在标志下-v)。请随意向lldb.llvm.org的 bugzilla 请求此错误,或者如果您觉得有动力的话,可以自行添加它。
如果您有一定的动力,但还不足以开始正确的黑客攻击,那么编写一个 Python 命令来收集所有这些信息并按照您想要的方式呈现它并不困难lldb。