lldb奇怪的错误怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (4)
  • 关注 (0)
  • 查看 (199)

我使用的是Xcode 4.3.1,我想使用lldb,几乎没有任何调试信息,但是得到了以下结果,在一个简单的NSMutableDictionary属性上使用po-ing:

(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总是会给出适当的结果。

怎么解决?

提问于
用户回答回答于

单击控制台中“Toggle全局断点状态”按钮的右侧按钮。

是蓝色箭头形的按钮。

用户回答回答于

在我的例子中,即使是一个简单的“po SomeString”也不起作用:

error: instance method 'URLEncodedString' has incompatible result types in different translation units ('void *' vs. 'NSString *')

error: instance method 'URLDecodedString' has incompatible result types in different translation units ('void *' vs. 'NSString *')

note: instance method 'URLEncodedString' also declared here

note: instance method 'URLDecodedString' also declared here

error: 2 errors parsing expression

我试过的事情:

  • 退出并重新启动XCode 7和模拟器(它们都运行了几天,没有重新启动)
  • Xcode:Product->Clean和(按住选项键)Clean build folder
  • 删除~/Library/Preferences/com.apple.dt.Xcode.plist
  • 删除~/Library/Developer/Xcode/派生数据/*
  • 删除~/Library/Developer/Xcode/IOS devicesupport/*
  • 安装最新的OS X El Capitan更新10.11.4

但所有这些都没有帮助。仍然不能在调试器中使用p或po字符串。

我的Mac上还有一个旧的Xcode 6(在安装Xcode 7之前重新命名并保存,然后放回/应用程序)。这仍然有效,我可以在调试器中输入“po omeString”,然后将字符串打印到调试日志中。但是Xcode 7没有.

我在这里找到了局部变量的解决办法(尽管这个问题不同):

http://lists.apple.com/files/xcode-user/2014/May/msg00088.html

点击局部变量列表中的变量并选择“打印描述”。

用户回答回答于

需要执行一个Clean Build Folder(在选择Clean时,按住选项)。

用户回答回答于

修复方法是确保实例变量和属性声明将“委托”描述为完全相同的类型。

扫码关注云+社区

领取腾讯云代金券