lldb 的“信息框架”相当于什么?

问题描述 投票:0回答:1

我尝试使用

lldb
LLVM 调试器,但我已经习惯了
gdb
。因此,我正在寻找与
gdb
命令
info frame
等效的
lldb

我想显示有关当前帧的信息以及保存的寄存器(保存的程序计数器和保存的基指针)的位置。例如,

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
gdb lldb
1个回答
6
投票

没有一个命令可以一目了然地显示所有这些信息。其中一些您很容易获得,例如:

(lldb) frame variable -L

将向您显示 args 和 locals 的位置 - 尽管它也会向您显示值。帧打印通常显示

pc
和源信息,
reg read sp
将显示堆栈指针。或者您可以将
fp
sp
添加到常规框架格式中(有关更多详细信息,请参阅此 page)。

有一个

frame info
命令可以显示当前帧的相当简单的视图。它当然可以扩展以显示更多此类信息(可能在
-v
标志下。)请随意向
lldb.llvm.org
的 bugzilla 请求此信息提交错误,或者如果您觉得有动力的话,可以自行添加它。

如果你有一定的动力,但还不足以开始黑客攻击,那么编写一个 Python 命令来收集所有这些信息并按照你想要的方式呈现它并不难。

    

© www.soinside.com 2019 - 2024. All rights reserved.