Xcode调试与iPhone应用程序是缓慢和laggy

问题描述:

我正在调试一个iPhone应用程序我在Xcode中编写,但有时现在调试器(这是GDB)减慢了很多(做一步一步的调试),并成为有时无响应(踏入,踩踏,踩踏的图标不可点击),有时会恢复正常并继续,有时候会一直保持,直到永久或消息出现在控制台中:“超时” (或类似的东西),我可以看到我的CPU从活动监视器上升到90%。作为一种解决方法,我曾经在我感兴趣的代码行之后放置了一个brekpoint,并简单地使用'Continue'继续'Continue'(这样做使其运行得非常好,而且速度很快)。 这可以代码依赖?有没有一种方法可以调试调试器(行为)?Xcode调试与iPhone应用程序是缓慢和laggy

UPDATE: 完整的消息是

Timed out fetching data. Variable display may be inaccurate. 

Google上搜寻它,我发现它时,Xcode的GDB试图寻找数据格式化内发生。有人建议禁用运行>变量视图>使用数据格式化器(在xcode 3.2中,之前我想它是调试 - >变量 查看 - >启用数据格式化器),它似乎也适用于我(至今) 因此,现在我我问:为什么? :d

UPDATE2: 这解决调试器从停止在代码的特定部分,但它在STIL另一个呼叫挂起(具有相同的消息)。在我看来,这涉及到一些CoreData API像(NSEntityDescription*)entityForName: inManagedObjectContext:

UPDATE3: 难道是最好的缓存NSEntityDescription而不是创建总是一个新的?

+0

这是否发生在您的代码中的所有地方?你能检查这些代码是否消耗大量计算?我以前从来没有遭受过。您的硬件细节,您当前的Mac OS以及您当前的XCode如何? – vodkhang 2010-07-12 06:35:57

+0

我在带有Mac OS X SL 10.6.4的2009 iMac上运行带有iPhone SDK 4的Xcode 3.2.2。现在我将对其他代码片段进行一些测试,但在具体的片断上,它的行为并不总是如此。 – rano 2010-07-12 06:45:07

+0

以下是特定的消息:“超时提取数据,变量显示可能不准确。” – rano 2010-07-12 06:52:56

尝试在乐器中运行您的代码。这可能是一个内存问题,所以请在代码运行时留意仪器中的使用情况。当你到达响应变得越来越少的部分时,你应该看到内存使用量增加并且能够从仪器中追溯。

希望这会有所帮助!

+0

仪器内部似乎很正常。正如帖子中所说,我已经注意到,Core Data API会发生这种情况。 – rano 2010-07-12 18:38:14

我有同样的问题,我解决了它禁用选项“运行” - 在的Xcode启用/禁用保护的Alloc”。现在它运行得非常快!检查是否启用了此选项并将其禁用。

希望它有帮助! :D

+0

谢谢,但** Guard Malloc **一直在我的项目中被禁用。另外,它产生的缓慢是'正确的',并且与我所遇到的不同(我的调试器完全挂起) – rano 2010-10-15 11:14:06

我在迁移到xCode 3.2后也遇到了同样的问题。我一直在使用xcode 3.0和2.0,我从来没有在这些SDK中遇到过这个问题。所以我认为这是新SDK的一个问题。

你写了很多东西到控制台?根据我的经验,它严重拖慢了一切。

+0

ehm不是这种情况,如果你仔细阅读 – rano 2010-11-10 17:45:38

+1

这个问题但我会给那些提示谁*正在向控制台写信息:在控制台中激活搜索功能会减慢速度。只要你不使用它,关闭搜索行。 (当程序主动写入控制台时,尽量不要打开搜索栏 - 它会严重陷入困境。) – 2012-08-29 11:54:07

我对Xcode的调试很新,但是在做我的研究时,我偶然发现了this question这可能对您的问题有所帮助。

基本上有两个人在那里有很多问题与Xcode调试和OP解决了他的问题,通过干净的安装。引用LucasTizma的第4次编辑:

最终得到设备调试工作。 我有一种感觉, 低级别在我的设备上造成 问题......我没有在我的 系统上工作过。但是,我在 上安装了另一个系统和设备调试 相同的设备(使用相同的电缆) 完美工作。 的是,设备调试开始了我原来的机器上工作 ,导致我 后直接认为,一些奇怪的硬件 国旗被搞砸了,不知何故 第二台机器上的“复位”。在任何 的情况下,它现在的作品。

+0

这不是关于设备调试,而是仿真器调试。另外,它有一些或多或少严格的条件下发生的问题 – rano 2010-11-10 20:13:33

+0

@rano我同意... Neverthless它暗示我Xcode有一些奇怪的错误,或者只是不那么简单,因为它是广告,这导致人们认为它是越野车,并“修复”它修复它。我想我的想法是让你尝试一下,至少在不同的,干净的机器上配置所有这些,看看你的问题是否存在。 – cregox 2010-11-11 17:48:38

+0

@Cawas我已经尝试清理和安装,即使不在新机器上,因为我只有这个:D – rano 2010-11-12 16:54:54

我有同样的问题,结果发现苹果的讨论中,一些相关的答案:问题

一个常见原因是试图运行未初始化的对象对数据格式。我们实际上没有办法确定对象是否合适。我们有一些启发式方法,但是堆栈对象有时会指向另一个堆栈对象的剩菜,它们“几乎足够好”并且欺骗了我们。有一个窍门可以解决这个问题,那就是当你打破一个函数时,在对象被初始化之后中断,而不是函数的开始。

+1

听起来有趣,你可以链接你的来源? – rano 2010-11-17 15:52:08

所以没有人有这个答案?在一个简短的测试中,关闭格式可能会有帮助(但是症状非常随机,很难说明确)。调试器几乎没有格式化。

当在方案中启用“队列调试”时,我观察到非常慢的调试。如果您不需要队列调试,请考虑禁用它。