【问题标题】:Debugger lldb says my object is nil when is not ?调试器 lldb 说我的对象是 nil 什么时候不是?
【发布时间】:2012-02-23 06:29:03
【问题描述】:

最近我在 Xcode 4.3 中升级了我的项目设置,现在我使用最新的 llvm 调试器:lldb

但是(有时)我觉得调试器没有给我正确的信息?这可能吗?

例如,调试器说_documentsItemnil(在控制台中和鼠标悬停在 ivar 上时)。但我知道它不是,这就是为什么我可以看到它(一个 UIBarButtonItem),更重要的是这就是应用程序在显示的断点处停止的原因)

if (_documentsItem) { ...

事实上,我的大部分属性也返回 nil :( 有没有办法确保调试器运行良好?

【问题讨论】:

  • 调试器一般不会说谎。您是否有可能有一个杂散的分号,例如if (_documentsItem); ?
  • 检查_documentsItemNSLog。如果NSLog 说它不是零,请发布您的代码。
  • NSLog 说不是 nil ...我回到了 GDB。

标签: objective-c xcode debugging llvm


【解决方案1】:

我在 Xcode 4.3 中遇到过类似的问题。并在单击“运行”的同时按“选项”并将其改回稳定的gdb。

【讨论】:

  • 你确实是真的。以下是 Xcode 4.3 发行说明 的一部分:“使用 LLDB 调试器时,一些调试器命令和断点中的日志表达式会失败,因为 Xcode 在执行调试器命令或评估日志时使用了错误的帧。表达式。如果您知道调试器命令或日志表达式必须相对于哪个线程运行,请在有问题的断点操作之前添加一个断点操作,将当前帧设置为适当的帧。10426977"
【解决方案2】:

肯定是零。

查看它被分配的地址。 0x00000 为零。

【讨论】:

    【解决方案3】:

    这是 XCode 的一个错误,截至 4.3.2 仍未解决。切换回 GDB,即使 XCode 抱怨您的项目设置。

    【讨论】:

      【解决方案4】:

      对于视图属性值,使用 "po self.yourproperty"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2019-08-20
        • 1970-01-01
        • 2013-02-16
        相关资源
        最近更新 更多