(lldb) error: anonymous closure argument not contained in a closure

(lldb) error: anonymous closure argument not contained in a closure

类似于 Anonymous closure argument not contained in a closure 但 lldb 相关

tableViews.forEach {
        [=10=].dataSource = self
        [=10=].delegate = self

        [=10=].estimatedRowHeight = 30
          ^^^^^^^^^^^^^^ breakpoint is here
}

正在尝试调试

(lldb) p $0.delegate

error: :3:1: error: anonymous closure argument not contained in a closure [=11=].delegate

(lldb) po $0.delegate

error: :3:1: error: anonymous closure argument not contained in a closure [=12=].delegate

可视化调试(将光标定位在 $0 上)确实有效, 你可以展开树并向下找到你感兴趣的变量。但是有一个小问题,uitableview 有大量的变量,因此视觉调试意图为 悟性地狱

鉴于调试的可视化部分有效,必须有某种方式获得 从命令行那里????怎样才能只得到我感兴趣的部分?

"p" 命令实际上会编译您键入的文本,就好像表达式已经在您停止的帧的文本中一样。为此,它必须完全重新创建该上下文。 lldb 得到了很多这样的权利,但它还不知道如何在它用来编译表达式的上下文中模拟 $ 闭包自动变量。

但更一般地说,print 尝试做的工作是一项比仅查看局部变量更难的任务,毫不奇怪,lldb 也有更直接的方法来查看简单的局部变量。该工具是 Xcode 用来实现本地视图和工具提示的工具。不过也是lldb命令行命令:

(lldb) frame var [=10=]

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

(lldb) frame var [=11=].delegate

使用 frame var 命令可能会更幸运。