Swift LLBD消息"<无法确定字节大小.>"

Zie*_*ter 13 debugging lldb swift

当我试图打印出一个对象的描述时,我在Swift调试器中遇到了一个非常讨厌的问题.当尝试打印和对象时,无论是使用po命令还是fr v命令,我都会收到消息

error: <EXPR>:1:1: error: use of unresolved identifier 'self' self ^

要么

self = <Unable to determine byte size.>

这里发生了什么?是否有原因导致调试器无法读取类似的内容self

Enr*_*ata 3

<Unable to determine byte size>
Run Code Online (Sandbox Code Playgroud)

是 LLDB 在不理解某些内容的类型时打印出来的(诚然有些神秘的)错误消息。

让我详细说明一下。当您键入表达式或执行帧变量时,调试器必须评估您提供的任何代码,或查找您要求的变量。

为了向您呈现结果,它还必须了解事物的类型。例如,Int 是一个具有数字值的事物,其大小与计算机上的指针大小相匹配,...(好吧,为了 100% 精确,Int 是一个具有具有数字值的成员的事物。 ..,但是 LLDB 将其从您手中抽象出来)。字符串是一个有一些文本的东西(同样,它有点棘手,但 LLDB 抽象了它)。调试器喜欢知道的事情之一是类型的“字节大小”,例如该类型的对象在内存中占用多少字节?

有时,调试器无法理解正在讨论的类型。显然,当这种情况发生时,无法确定的事情之一就是字节大小。因此,消息。

如果您遇到调试器无法推断应用程序中的类型的情况,请提交错误http://bugreport.apple.com