LLDB步骤多指令?

时间:2014-07-02 01:56:38

标签: macos debugging assembly gdb lldb

在GDB中,可以使用单个命令执行多个指令。经过多次搜索后,似乎无法在LLDB中进行相同的操作。

例如,在GDB中,如果您输入si 5,则会前进5条指令。但是,在LLDB中执行相同操作会导致:

  

错误:线程索引5超出范围(有效值为0 - 1)。

在GDB中,使用整数运行si定义要执行的指令数,但在LLDB中,它定义了向前执行1指令的线程。

有没有办法在LLDB中推进多个指令,就像在GDB中一样?

2 个答案:

答案 0 :(得分:2)

这是我们队列中的一项增强功能,但不知何故从未进入过顶级。我为step-inst&添加了一个--count选项。我的午餐时间黑客攻击下一步。这是在TOT lldb,不能说什么时候它将成为苹果官方版本。

答案 1 :(得分:1)

如果您遇到旧版本的LLDB并且没有在询问此问题后实现的功能,或者只是想自动重复任何任意命令,这里是一种快速而肮脏的方式脚本化多个命令,可以从交互式LLDB python提示中轻松输入:

lldb.debugger.SetAsync(False)
for _ in range(3): lldb.debugger.HandleCommand('si')

以上将使API同步,以便每个命令在运行下一个命令之前完成,然后循环执行命令(在本例中为3次)。

要访问此提示,请在LLDB提示符处输入script命令,然后在Python处输入。

(lldb) script