【问题标题】:(lldb) error: anonymous closure argument not contained in a closure(lldb) 错误:匿名闭包参数不包含在闭包中
【发布时间】:2018-08-13 08:14:49
【问题描述】:

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

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

        $0.estimatedRowHeight = 30
          ^^^^^^^^^^^^^^ breakpoint is here
}

尝试调试

(lldb) p $0.delegate

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

(lldb) po $0.delegate

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

可视化调试(将光标定位在 $0 上)确实有效, 您可以扩展树并向下查找您感兴趣的变量。但是有一个小问题,其中有大量用于 uitableview 以便可视化调试意图铺平道路 理解地狱

鉴于调试的视觉部分有效,必须有一些方法可以得到 从命令行那里????我怎么能只得到我感兴趣的部分?

【问题讨论】:

    标签: swift xcode lldb


    【解决方案1】:

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

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

    (lldb) frame var $0
    

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

    (lldb) frame var $0.delegate
    

    frame var 命令可能会让您更幸运。

    【讨论】:

    • 对,正如你所说,$0 本身的框架变量和它的道具有效,不适用于计算属性
    • 哪个老 lldb gdb 和 Objective c 运行时的问题少了很多
    • xcode 10.2 添加了“v”,它运行得非常快。不知道有多可靠。
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2021-12-10
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2012-02-21
    • 2022-01-14
    相关资源
    最近更新 更多