Xcode 4.3和iOS 3.x设备调试

10

我上周通过Mac应用商店刚将Xcode更新到4.3版本,发现我再也无法在iOS 3.x设备上进行调试了。我有一台运行iOS 3.1.3的iPhone 3G和一台运行iOS 3.2的第一代iPad。

在两台设备上,Xcode 4.3似乎会安装应用并尝试启动应用程序。 应用程序显示闪屏画面但始终未能完成启动。调试器输出窗口中没有任何错误消息或任何信息。 我唯一的线索是当我按下暂停按钮时,我可以看到设备/Xcode卡在以下函数中:addimagesToAllImages,它似乎与Apple的DYLD相关。

iOS 5设备上的调试工作正常,并且在先前的Xcode 4.2安装中也可用。 我已经重新启动了我的Mac和iOS 3.x设备,清除了所有缓存,但行为没有任何改变。

有人知道发生了什么吗?谢谢您的帮助。


看起来XCode 4.3强制编译器使用LLVM 3.1和调试器lldb,这在iOS 3上不受支持。你检查过项目是否仍然可以使用LLVM GCC编译吗? - bontoJR
感谢Junior B。我已将“C/C++/Objective-C编译器”构建选项更改为“LLVM GCC 4.2”,但仍看到相同的问题。是否还有其他设置需要更改以便让xcode使用GCC和/或GDB调试器? - Wesley Filleman
1
好的,我根据Junior B有关调试器的提示解决了问题。我进入“管理方案”并选择了正在使用的方案,然后点击“编辑”。在“运行”部分下,我将调试器从LLDB更改为GDB。现在,在iOS 3.x和5.x设备上进行调试工作正常。此外,我将编译器保留为xcode 4.3首选的LLVM 3.1设置。 - Wesley Filleman
有关3.x支持的有用信息可以在此处找到:https://dev59.com/o2025IYBdhLWcg3wVkUR - Maxim Kholyavkin
有关3.x支持的有用信息可以在此处找到:https://dev59.com/o2025IYBdhLWcg3wVkUR - Maxim Kholyavkin
4个回答

13

好的,我通过Junior B有关调试器的提示解决了问题。我去"管理方案"并选择我正在使用的方案,然后点击"编辑"。在“运行”部分下,我将调试器从LLVM改为GDB。现在,在iOS 3.x和5.x设备上进行调试很好用了。此外,我将编译器保留为xcode的首选设置LLVM 3.1。

希望这对那些接受xcode升级顾问推荐设置但其iOS 3.x调试出现问题的人有所帮助。


难以置信 - 我浪费了一整天的时间在我的代码中寻找我做错了什么。我已经厌倦了不得不跟踪所有这些小问题 - 计算机应该为您完成这项工作!苹果肯定可以放置一个检查并弹出警报,如果编译到ios3设备时建议使用gdb。感谢Wesley提供的解决方案。 - amergin

1

您是否安装了“iOS 3.0-3.2.2设备调试支持”组件?

从菜单栏中选择Xcode>首选项...,然后在偏好设置窗口中选择下载>组件。 找到iOS 3.0支持的行,并单击安装按钮。


嗨,罗布,谢谢你的回复。是的,已安装iOS 3.0-3.2.2设备调试支持。只是为了好玩,我也安装了4.0设备调试支持,但行为没有改变。 - Wesley Filleman

0

仅仅从LLDB切换到GDB并不能解决我遇到的同样问题。因为我在git中有一个旧的有效提交,所以我找出了Xcode项目设置中哪些更改导致了这个错误。因此,我可以通过从我的$PROJECT.xcodeproj/project.pbxproj文件中删除以下行的所有出现来解决这个问题。

GCC_THUMB_SUPPORT = NO;

另外,我将值恢复为

LastUpgradeCheck = 0430;

返回
LastUpgradeCheck = 0420;

由于我的计划被配置为“共享”,因此这些设置也存储在项目目录中(在项目.xcodeproj目录下的子目录“xcshareddata”中),因此更改也会在git中可见。我撤销的另一个更改是从“$PROJECT.xcodeproj/xcshareddata/xcschemes/$PROJECT.xcscheme”中删除了这两行:

LastUpgradeVersion = "0430"
ignoresPersistentStateOnLaunch = "NO"

.xcsheme文件中的另一个更改是,'selectedDebuggerIdentifier'和'selectedLauncherIdentifier'的值以'.GDB'结尾而不是'.LLDB',但这实际上与按照Wesley的接受答案所得到的结果相同。

这些更改解决了我的问题,我可以在运行iOS 3.1.3的iPhone Classic上再次进行调试。

然而,在使用您喜欢的文本编辑器应用这些编辑之前,我强烈建议使用版本控制系统(或至少本地备份)。


-2

大家好,亲爱的朋友们,

   I am having one simple solution as follows:

在Xcode中选择“偏好设置”→“调试器”,勾选“自动清除调试控制台”,每次运行应用程序时,结果将会清空控制台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接