9

我真的在为我们的大型 ios 项目调试代码而苦苦挣扎。似乎每个人都对到处放置块和调度队列发疯了。

当我被要求调试一段代码时,我真的很喜欢单步调试,看看事情是如何变化的,看看变量到底发生了什么。对于所有已放入的块,我真的不能轻易做到这一点,原因有两个:

  1. 我必须在每个小块内放置一个断点才能在该块中停止。

  2. 在一个块内,来自块外的变量不会以可用的方式显示,并且不能使用 po 命令轻松转储到控制台。

是否有更简单或更好的方法来单步执行/评估充满块的代码?或者我在这里错过了什么?

4

4 回答 4

3

您是否将断点与自动控制台转储一起使用(不停止正在运行的应用程序)?

有一个远非优秀但真正有用的关于中间调试的教程。

快乐编码!

于 2013-04-05T18:27:16.237 回答
1

为什么不使用 NSLog() 在块中输出所需的变量?

于 2013-04-05T18:25:45.113 回答
1

您可以使用以下命令在控制台中打印出对象:

例子:

po object.name
po object.age

另一种方法:在代码处设置断点。当它在该点停止执行时,将鼠标悬停在它上面。

有关更清晰的细节,请查看我对这个问题的回答:How to inspect elements from NSArray and NSDictionary in xcode?

于 2013-04-05T19:35:14.627 回答
1

你是对的,调试块有点麻烦。我尝试使用“自动转储断点”,但事实证明,它们很难维护......

我最终基本上使用了NSLog. 但问题NSLog()是,你不想在你的发布版本中记录所有的日志。所以我建议使用如下工具:

MWLogging

我认为这真的很棒。您可以在此博客文章中阅读相关内容并进行一般登录:

iOS 开发:你做错了

真的很值得一读。

于 2013-04-05T20:10:35.630 回答