2011-12-07 55 views
4

我很确定我已经知道答案了,但我想我会问。 为了确保我的变量是我希望他们在某个特定点上的位置,我需要创建日志和断点,我很烦躁。有没有办法在XCode 4中不使用断点来观察变量?

任何人都知道一种监视变量的方法,因为它们在没有断点/日志的情况下运行?

谢谢!

回答

6

如果你想确保你的变量必须在某个特定点的某种方式,这就是断言(例如NSAssert())。

如果您只是想知道变量何时更改,请使用观察点而不是断点。 (单击调试器中的变量并选择“Watch”。)

如果您想要在特定点检查某个变量,并且只有在“某些特定情况”时才打断,请使用条件断点。右键单击xcode中的断点,然后选择“编辑断点”。您也可以使用此功能,以便每隔一段时间就打破一次(例如发生100次火灾后)。

如果您只是想知道何时到达一行代码,但并未停止,请在“编辑断点”窗口中使用动作“声音”,然后在“评估动作后自动继续”。我在演奏工作中使用了很多。当我听到它开始嗡嗡声时,我知道我在代码中找到了一个热点。

你有没有别的想法?

+0

不错!我从来没有注意到你可以用断点完成所有这些。这将有助于!谢谢 – Louie

4

上抢纳皮尔的很好的建议之后,您还可以编辑断点来记录你所关心的值,然后继续,就像这样:

Image showing a logging breakpoint.

正如你所看到的,我已经设置此断点以记录表达式[marker center]的值。 GDB经常需要帮助才能知道表达式的最终类型是什么,这就是为什么我必须添加(CGPoint)强制转换。这显然比单击左列来设置一个普通的旧断点要多一点点工作,但是与在代码中插入NSLog()语句相比,它的工作量可以减少,而且可以在调试会话的中间执行 - 无需重新编译,甚至重新启动应用程序。

相关问题