【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 2016-01-29
        • 1970-01-01
        • 2013-01-16
        • 2016-12-23
        • 2016-05-27
        • 1970-01-01
        • 2012-06-20
        • 2017-03-20
        • 1970-01-01
        相关资源
        最近更新 更多