Xcode 4.3 和 iOS 3.x 设备上的调试

Posted

技术标签:

【中文标题】Xcode 4.3 和 iOS 3.x 设备上的调试【英文标题】:Xcode 4.3 and debugging on iOS 3.x devices 【发布时间】:2012-03-10 08:34:37 【问题描述】:

我上周刚刚通过 Mac App Store 将 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 并将调试器强制使用 iOS 3 不支持的 lldb。您是否检查过该项目仍在使用 LLVM GCC 编译? 感谢 Junior B。我将构建选项“C/C++/Objective-C 编译器”更改为“LLVM GCC 4.2”,但仍然看到同样的问题。是否需要更改其他设置才能使用 GCC 和/或 GDB 调试器获取 xcode?​​span> 好的,我通过 Junior B 关于调试器的提示找到了答案。我去了“管理方案”并选择了我正在处理的方案并单击“编辑”。在“运行”部分下,我将调试器从 LLDB 更改为 GDB。现在在 iOS 3.x 和 5.x 设备上调试工作正常。另外,我将编译器留给了 xcode 4.3 的 LLVM 3.1 的首选设置。 关于 3.x 支持的有用信息可以在这里找到:***.com/q/6075161/751932 关于 3.x 支持的有用信息可以在这里找到:***.com/q/6075161/751932 【参考方案1】:

好的,我根据 Junior B 关于调试器的提示想通了。我去了“管理方案”并选择了我正在处理的方案并单击“编辑”。在“运行”部分下,我将调试器从 LLVM 更改为 GDB。现在在 iOS 3.x 和 5.x 设备上调试工作正常。另外,我将编译器留给了 xcode 的 LLVM 3.1 的首选设置。

希望这可以帮助接受 xcode 升级顾问推荐设置和他们的 iOS 3.x 调试中断的其他人。

【讨论】:

难以置信 - 我浪费了一天的时间在我的代码中寻找我做错了什么。我已经厌倦了必须跟踪所有这些小问题——计算机应该为你做这件事!如果编译到 ios3 设备建议 gdb 是必要的,苹果当然可以进行检查并弹出警报。感谢 Wesley 的解决方案。【参考方案2】:

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

从菜单栏中选择 Xcode > Preferences...,然后在 Preferences 窗口中选择 Downloads > Components。找到支持 iOS 3.0 的行并单击“安装”按钮。

【讨论】:

您好 Rob,感谢您的回复。是的,iOS 3.0 - 3.2.2 设备调试支持已安装。只是为了好玩,我还安装了 4.0 设备调试支持,但行为没有改变。【参考方案3】:

遇到相同问题时,仅从 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”结尾,但这实际上与您通过遵循接受的答案得到的结果相同来自卫斯理。

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

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

【讨论】:

【参考方案4】:

亲爱的朋友们,

   I am having one simple solution as follows:

"Xcode --> Preferences --> Debugger --> 勾选 Auto clear Debug console" 每次运行应用程序时,结果都会清除控制台

【讨论】:

以上是关于Xcode 4.3 和 iOS 3.x 设备上的调试的主要内容,如果未能解决你的问题,请参考以下文章

针对 XCode 4.6 下的 iOS 4.x 设备

升级到 XCode 4.3 后 FPS 下降

Xcode 只允许我为 iOS 设备运行(无模拟器)

使用 Xcode 在越狱 iOS 设备上进行开发调试

在 ios xcode 4.3(故事板)中弹出 facebook feed 对话框(用于墙贴)

XCode 4.3 使用错误链接的 dylib 构建 iOS 应用程序(未找到符号:_OBJC_CLASS_$_CLGeocoder)