在GDB中,可以使用单个命令执行多个指令。经过多次搜索后,似乎无法在LLDB中进行相同的操作。
例如,在GDB中,如果您输入si 5
,则会前进5条指令。但是,在LLDB中执行相同操作会导致:
错误:线程索引5超出范围(有效值为0 - 1)。
在GDB中,使用整数运行si
定义要执行的指令数,但在LLDB中,它定义了向前执行1指令的线程。
有没有办法在LLDB中推进多个指令,就像在GDB中一样?
答案 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