我很确定我已经知道了答案,但我想我还是会问。 我只是为了确保我的变量是我希望它们在某一点上的位置而生病和厌倦。
任何人都知道在没有断点/日志的情况下运行变量的方法吗?
谢谢!
答案 0 :(得分:6)
如果你想确保你的变量在某一点上必须是某种方式,那就是断言(例如NSAssert()
)。
如果您只想知道变量何时发生变化,请使用观察点而不是断点。 (单击调试器中的变量并选择“Watch”。)
如果你想检查一个特定点的变量,只有当它是“特别的东西”时才会中断,使用一个条件断点。右键单击xcode中的断点并选择“编辑断点”。你也可以使用它来经常打破(例如100次火灾后)。
如果您只是想知道何时到达一行代码但未停止,请在Edit Breakpoint窗口中使用“Sound”操作,然后在“评估操作后自动继续”。我在性能工作中使用了这么多。当我听到它开始嗡嗡声时,我知道我在代码中找到了一个热点。
你还有别的想法吗?
答案 1 :(得分:4)
继Rob Napier的优秀建议后,您还可以编辑断点以记录您关注的值,然后继续,如下所示:
如您所见,我已设置此断点以记录表达式[marker center]
的值。 GDB经常需要帮助才能知道表达式的最终类型是什么,这就是我必须添加(CGPoint)
强制转换的原因。这显然比单击左列设置一个普通的旧断点要多一些工作,但它可以说比在代码中插入NSLog()
语句要少,而且你可以在调试会话中间做到这一点。 - 无需重新编译甚至重新启动应用程序。