我正在使用xCode 4.3.1,并且一旦我想使用lldb,我几乎没有获得任何调试信息,而是得到以下结果,改为使用简单的NSMutableDictionary属性:
(lldb) po _keywordCache
error: instance method 'delegate' has incompatible result types in different translation units ('objc_object *' vs. 'id')
error: instance method 'delegate' has incompatible result types in different translation units ('objc_object *' vs. 'id')
note: instance method 'delegate' also declared here
note: declared here with type 'id'
note: instance method 'delegate' also declared here
note: declared here with type 'id'
error: 2 errors parsing expression
切换到gdb始终会给出正确的结果 有人有想法吗?
答案 0 :(得分:8)
在我的案例中问题的根源是这里讨论的属性,“委托”在实例变量和属性声明中被声明为一个微妙的不同类型。在我的例子中,实例变量类型是id
,属性声明是id<SomeProtocol>
。
我将向Apple报告这是一个错误,因为它不应该导致检查变量失败。修复方法是确保实例变量和属性声明将“委托”描述为完全相同的类型。希望这有帮助!
答案 1 :(得分:1)
我知道这已经很晚了,但是在Xcode 6上遇到了这个问题,需要做一个Clean Build Folder(选择干净时按住选项)。
答案 2 :(得分:1)
我从昨天开始在Xcode 7.3(7D1002)中遇到同样的问题。在它工作好几周之前。在我的情况下,即使是简单的“po someString”也不起作用:
错误:实例方法'URLEncodedString'在不同的翻译单元中具有不兼容的结果类型('void *'与'NSString *')
错误:实例方法'URLDecodedString'在不同的翻译单元中具有不兼容的结果类型('void *'与'NSString *')
注意:实例方法'URLEncodedString'也在这里声明了
注意:实例方法'URLDecodedString'也在这里声明了
错误:解析表达式时出错2个
我尝试的事情:
但所有这些都无济于事。调试器中仍然不能使用p或po字符串。
我的Mac上仍然有一个旧的Xcode 6(在安装Xcode 7之前重命名并收起,然后放回/ Applications)。这仍然有效,我可以在调试器中输入“po someString”,并将字符串打印到调试日志中。但是Xcode 7没有......
我在这里找到了局部变量的解决方法(即使这个问题不同):
http://lists.apple.com/archives/xcode-users/2014/May/msg00088.html
ctrl-单击局部变量列表中的变量,然后选择“打印描述”
打印someString的说明:
ipad的
这有点帮助,但无法打印更复杂的命令。
答案 3 :(得分:-1)
我也有这个错误,对我而言,它实际上没有任何问题。我所做的就是点击&#34;切换全局断点状态&#34;右边的按钮。控制台中的按钮。
它是蓝色的箭头形按钮。