我在Swift调试器中遇到了一个非常烦人的问题,当我试图打印一个对象的描述时,无论是使用po命令还是fr v命令,我都会收到如下消息error: <EXPR>:1:1: error: use of unresolved identifier 'self' self ^或self = <Unable to determine byte size.>这是怎么回事?调试器不能读取类似self的内容有什么原因吗?
po
fr v
error: <EXPR>:1:1: error: use of unresolved identifier 'self' self ^
self = <Unable to determine byte size.>
self
bwleehnv1#
<Unable to determine byte size>
是当LLDB不理解某个对象的类型时,它将打印出的错误消息(当然有些隐晦)。让我再详细说明一下,当你输入一个表达式,或者一个框架变量时,调试器必须评估你提供的任何代码,或者查找你要求的变量。为了向你呈现结果,它还必须理解事物的类型。例如,Int是一个具有数值的事物,其大小与你机器上的指针大小相匹配,...(好吧,为了100%精确,Int是一个包含一个数值成员的事物......但是LLDB把它抽象出来了)字符串是一个有文本的东西(同样,这有点棘手,但LLDB对此进行了抽象)调试器喜欢知道的一件事是类型的“字节大小”,例如,这种类型的对象在内存中占用多少字节?有时候,调试器无法理解正在讨论的类型。当这种情况发生时,很明显,无法确定的事情之一是字节大小。因此,消息。如果您遇到调试器无法推断应用中的类型的情况,请提交错误http://bugreport.apple.com
kmynzznz2#
正如Scott D提到的,这可能是Fabric的问题。如果你正在使用Fabric,特别是TwitterKit,请转到TwitterKit框架并手动编辑TwitterKit. h。#import <TwitterCore/TwitterCore.h>与@import TwitterCore;使调试器再次可用。Fabric和Crahlytics pod已更新,不再中断调试器。编辑:twitterpod从fabric也被更新了,从1.12.0版本开始,他们不会破坏调试器。耶!
#import <TwitterCore/TwitterCore.h>
@import TwitterCore;
elcex8rz3#
在我的例子中,经过大量的研究和测试,我发现第三方插件"Crashlytics"和"TwitterKit"(在我的例子中是通过cocopods安装的)导致了这个问题。在删除了这些库并进行了清理和构建之后,我能够再次正确使用LLDB。参见https://stackoverflow.com/a/26451537/2138077
vs91vp4v4#
我有间歇性的问题。清理构建文件夹并重新构建可以解决这个问题。(产品-〉清理构建文件夹)
kadbb4595#
如果要打印的值是可选的,请尝试使用nil-coalescing操作符(??)使其成为非可选的。
??
5条答案
按热度按时间bwleehnv1#
是当LLDB不理解某个对象的类型时,它将打印出的错误消息(当然有些隐晦)。
让我再详细说明一下,当你输入一个表达式,或者一个框架变量时,调试器必须评估你提供的任何代码,或者查找你要求的变量。
为了向你呈现结果,它还必须理解事物的类型。例如,Int是一个具有数值的事物,其大小与你机器上的指针大小相匹配,...(好吧,为了100%精确,Int是一个包含一个数值成员的事物......但是LLDB把它抽象出来了)字符串是一个有文本的东西(同样,这有点棘手,但LLDB对此进行了抽象)调试器喜欢知道的一件事是类型的“字节大小”,例如,这种类型的对象在内存中占用多少字节?
有时候,调试器无法理解正在讨论的类型。当这种情况发生时,很明显,无法确定的事情之一是字节大小。因此,消息。
如果您遇到调试器无法推断应用中的类型的情况,请提交错误http://bugreport.apple.com
kmynzznz2#
正如Scott D提到的,这可能是Fabric的问题。如果你正在使用Fabric,特别是TwitterKit,请转到TwitterKit框架并手动编辑TwitterKit. h。
#import <TwitterCore/TwitterCore.h>
与
@import TwitterCore;
使调试器再次可用。Fabric和Crahlytics pod已更新,不再中断调试器。
编辑:twitterpod从fabric也被更新了,从1.12.0版本开始,他们不会破坏调试器。耶!
elcex8rz3#
在我的例子中,经过大量的研究和测试,我发现第三方插件"Crashlytics"和"TwitterKit"(在我的例子中是通过cocopods安装的)导致了这个问题。在删除了这些库并进行了清理和构建之后,我能够再次正确使用LLDB。
参见https://stackoverflow.com/a/26451537/2138077
vs91vp4v4#
我有间歇性的问题。清理构建文件夹并重新构建可以解决这个问题。(产品-〉清理构建文件夹)
kadbb4595#
如果要打印的值是可选的,请尝试使用nil-coalescing操作符(
??
)使其成为非可选的。