2010-11-08 123 views
1

我想调试一个iPhone应用程序(iOS模拟器4.1)的小原型,编译为调试,与所有配置显然确定。Xcode停在断点,似乎挂起

该应用程序使用Cocos2d图形引擎和GDataXMLNode库(用于读取XML)。没有太多东西在发生。但是在某些方法上,如果我设置了一个断点,gdb只是“停止”。

这里的调试器的状态栏它击中后,他的断点:

alt text

而这里有断点(sshot)代码:

alt text

:断点可以在该函数中的任何地方,并且是相同的。

这是调用代码(从另一个对象)

self.map = [SimulationLoader loadMap]; 

无编辑按钮的工作时,设置断点的“loadMap”内部(步骤到的,失步,然后,继续执行,等等)我可以停止和/或重新启动调试,它可以工作(但可以回到开始)gdb提示符会让我写,但没有任何反应,我无法查看对象值或任何与调试有关的信息。恢复执行,它不会做任何事情。

奇怪的是,如果我在之前放了一个断点或之后该行(loadMap),它都可以工作,我可以步出或进入,调试它并完成我想要做的一切。

我错过了什么?

“失败”断点被击中(并且“挂起”)几秒钟后,堆栈窗口清除。我相信所有这些都是因为gdb已经停止了,但问题是,为什么它会停在那里?这有什么限制?

我正在编译与LLVM GCC 4.2什么是值得的(但可能会改变其他如果这是问题,还没有尝试过,因为我不太了解这些差异)。

回答

0

有什么(可能在你的地图班?)需要时间?例如,在该地点触发断点的双击是否被中断?

(即无断点=>录得双抽头,断点=>第二次敲击来断点命中之后,所以只有一个抽头被注册。)

我没有看到这样的事情在你的具体代码,但这是可以显示断点开/关之间神秘不同行为的那种类型。