【问题标题】:LLDB Step Multiple Instructions?LLDB 多步指令?
【发布时间】:2014-08-22 16:36:03
【问题描述】:
在 GDB 中,可以使用单个命令执行多条指令。经过大量搜索,在 LLDB 中似乎无法做到这一点。
例如在GDB中,如果你输入si 5,你会前进5条指令。但是,在 LLDB 中执行相同操作会导致:
错误:线程索引 5 超出范围(有效值为 0 - 1)。
在运行 si 的 GDB 中,使用整数定义了要步进的指令数,但在 LLDB 中,它定义了向前步进 1 条指令的线程。
有没有办法像在 GDB 中那样在 LLDB 中向前推进多条指令?
【问题讨论】:
标签:
macos
debugging
assembly
gdb
lldb
【解决方案1】:
这是我们队列中的一项增强功能,但不知何故从未登上榜首。我在 step-inst 和 step-next-inst 添加了一个 --count 选项作为我的午餐时间技巧。它在 TOT lldb 中,不知道什么时候会成为 Apple 的官方版本。
【解决方案2】:
如果您卡在旧版本的 LLDB 上并且没有在提出此问题后实现的功能,或者只是想自动重复任何任意命令,这里有一种快速而简单的方法编写多个可以从交互式 LLDB python 提示符轻松输入的命令:
lldb.debugger.SetAsync(False)
for _ in range(3): lldb.debugger.HandleCommand('si')
上面会使得API同步,这样每条命令都会在运行下一条之前完成,然后循环执行命令(本例中3次)。
要访问此提示,请在 LLDB 提示下输入 script 命令,然后输入 Python。
(lldb) script