(lldb)错误:闭包中不包含匿名闭包参数

Ant*_*hko 3 xcode lldb swift

类似于 不包含在闭包中 但与lldb相关的匿名闭包参数

tableViews.forEach {
        $0.dataSource = self
        $0.delegate = self

        $0.estimatedRowHeight = 30
          ^^^^^^^^^^^^^^ breakpoint is here
}
Run Code Online (Sandbox Code Playgroud)

尝试调试

(lldb)p $ 0。

错误::3:1:错误:闭包$ 0中不包含匿名闭包参数.delegate

(lldb)po $ 0。委托

错误::3:1:错误:闭包$ 0中不包含匿名闭包参数.delegate

可视化调试(将光标定位在$ 0上)确实有效,您可以扩展树并下移至您感兴趣的变量。但是有一个小问题,用于uitableview的用户数不胜数,因此可视化调试意图为通往理解地狱的道路

鉴于调试工作的可视部分,必须有某种方法可以从命令行到达那里?我怎样才能只获得自己感兴趣的部分?

Jim*_*ham 5

实际上,“ p”命令会编译您键入的文本,就像该表达式已出现在您所停靠的框架的文本中一样。为此,它必须完全重新创建该上下文。lldb拥有很多这种权利,但它尚不知道如何在用于编译表达式的上下文中模拟$闭包自动变量。

但是更一般地说,这项工作print尝试完成的任务要艰巨得多,仅查看局部变量,并不奇怪l​​ldb也具有查看简单局部变量的更直接的方法。该工具是Xcode用于实现本地视图和工具提示的工具。但这也是lldb命令行命令:

(lldb) frame var $0
Run Code Online (Sandbox Code Playgroud)

“ frame var”命令没有完整的语言解析器,例如,它无法计算表达式。但是它确实允许您指定结构的元素,例如:

(lldb) frame var $0.delegate
Run Code Online (Sandbox Code Playgroud)

您可能对frame var命令有更多的希望。