21

我正在使用 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 总能得到正确的结果。
任何人的想法?

4

4 回答 4

8

在我的例子中,问题的根源是这里有问题的属性,“委托”在实例变量和属性声明中被声明为一个稍微不同的类型。在我的例子中,实例变量类型是id,属性声明是id<SomeProtocol>.

我将把它作为一个错误报告给 Apple,因为它不应该导致检查变量失败。解决方法是确保实例变量和属性声明将“委托”描述为完全相同的类型。希望这可以帮助!

于 2012-04-19T15:12:05.730 回答
1

我知道这已经很晚了,但是在 Xcode 6 上遇到了这个问题,需要执行一个 Clean Build Folder(在选择 clean 时按住选项)。

于 2014-09-23T18:14:13.790 回答
1

从昨天开始,我在 Xcode 7.3 (7D1002) 中遇到了同样的问题。在它工作好几个星期之前。在我的情况下,现在甚至一个简单的“po someString”也不起作用:
    错误:实例方法'URLEncodedString'在不同的翻译单元中具有不兼容的结果类型('void *'与'NSString *')
    错误:实例方法'URLDecodedString'在不同的翻译单元中具有不兼容的结果类型('void *' vs. 'NSString *')
    注意:实例方法 'URLEncodedString' 也在此处声明
    注意:实例方法 'URLDecodedString' 也在此处声明
    错误:解析表达式时出现 2 个错误

我尝试过的事情:

  • 退出并重新启动 Xcode7 和模拟器(它们都运行了好几天没有重新启动)
  • Xcode:Product->Clean and (hold the option key) Clean build folder
  • 删除 ~/Library/Preferences/com.apple.dt.Xcode.plist
  • 删除~/Library/Developer/Xcode/DerivedData/*
  • 删除~/Library/Developer/Xcode/iOS DeviceSupport/*
  • 安装最新的 OS X El Capitan 更新 10.11.4

但这一切都无济于事。在调试器中仍然不能 p 和 po 字符串。

我的 Mac 上还有一个旧的 Xcode 6(在安装 Xcode 7 之前重命名并收起,然后放回 /Applications)。这仍然有效,我可以在调试器中输入“po someString”并将字符串打印到调试日志中。但是 Xcode 7 没有……</p>

我在这里找到了局部变量的解决方法(即使这个问题不同):http:
//lists.apple.com/archives/xcode-users/2014/May/msg00088.html
ctrl-click on variable in local variables list and选择“打印描述”<br> 打印一些字符串的描述:
    ipad

这有一点帮助,但不能打印更复杂的命令。

于 2016-05-03T12:26:05.960 回答
-1

我也有这个错误,但对我来说,代码实际上并没有错。我所做的只是单击控制台中“切换全局断点状态”按钮右侧的按钮。

它是蓝色箭头形状的按钮。
它是蓝色的箭头形按钮。

于 2014-05-02T20:51:53.167 回答