使用iPhone应用程序进行Xcode调试既缓慢又滞后

时间:2010-07-12 06:24:48

标签: iphone xcode debugging gdb

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

更新: 完整的消息是

Timed out fetching data. Variable display may be inaccurate.

谷歌搜索我发现它发生在Xcode gdb试图查看数据格式化程序时。有人建议禁用运行>变量视图>使用数据格式化程序(在xcode 3.2中,以前我猜它是Debug->变量 查看 - >启用数据格式化程序),它似乎也适用于我(直到现在) 所以现在我问:为什么? :D

UPDATE2 : 这解决了调试器停止在代码的特定部分,但它在另一个调用中挂起(使用相同的消息)。在我看来,这涉及一些CoreData API,如(NSEntityDescription*)entityForName: inManagedObjectContext:

UPDATE3 : 是否最好缓存NSEntityDescription而不是始终创建一个新的?

8 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我遇到了同样的问题,并在苹果的讨论中找到了一些相关的答案:

  

问题的一个常见原因是尝试在未初始化的对象上运行数据格式化程序。我们实际上没有办法确定对象是否好的时候。我们有一些启发式方法,但堆栈对象有时会指向另一个堆栈对象的剩余部分“几乎足够好”并欺骗我们。一个有助于解决这个问题的技巧是当你打破一个函数时,在初始化对象之后中断,而不是在函数的最开始。

答案 3 :(得分:1)

所以没有人对此有答案吗?在短暂的测试中,关闭格式化可能有所帮助(但症状是如此随机,很难说是确定无疑)。如果没有格式化,调试器几乎没用。

答案 4 :(得分:0)

尝试在Instruments中运行代码。这可能是内存问题,因此在代码运行时请注意您在Instruments中的使用情况。当你到达响应越来越少的部分时,你应该看到内存使用率上升,并能够从仪器中追溯到那里。

希望这有帮助!

答案 5 :(得分:0)

我遇到了同样的问题,我在停用选项“运行” - “启用/禁用Guard Alloc ” > xcode的。现在它运作得如此之快!检查您是否启用了此选项并将其禁用。

希望它有所帮助! :d

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

基本上有两个人在xcode调试方面有很多问题,OP通过全新安装解决了他的问题。引用 LucasTizma 的第4次编辑:

  

最终让设备调试正常工作。   我有一种感觉   我的设备上的低级别是造成的   问题......我没有做过任何事情   系统。但是,我安装了Xcode   另一个系统和设备调试   相同的设备(使用相同的电缆)   工作完美无瑕。直接之后   那,设备调试开始工作   在我原来的机器上,引导我   相信一些奇怪的硬件   国旗搞砸了,不知何故   在第二台机器上“重置”。在任何   案例,它现在有效。