越狱的iOS 4.2.1版iPhone 3G无法使用XCode进行调试。

3

我正在尝试使用XCode 3.2.5和iOS 4.2.1越狱的iPhone 3G调试我的应用程序。

当我启用断点进行调试时,应用程序无法启动(停留在“Default.png”屏幕上),并且在GDB中收到“数据格式化程序暂时不可用,将在'continue'后重新尝试。 (找不到dlopen函数,因此无法加载共享库。)”的消息。

当我没有启用断点进行调试时,应用程序可以正常启动。

我尝试按照这里描述的步骤进行操作,但没有任何结果。

当我使用iOS 4.1时,会出现重新启动的问题。

每次连接iPhone时,组织器都会显示此消息:

检测到未知的iOS版本 Xcode在名为“iPhone”的设备上没有关于该iOS版本的调试信息。Xcode可以从设备中收集调试数据以启用此iOS版本的开发。此过程每个iOS版本只需要执行一次,需要几分钟时间。

感谢您的任何帮助!


不幸的是,这就是越狱的风险。 - Jesse Armand
这个问题似乎在Xcode 4.0.2之前的某个时间点被修复了,因为我的iPhone 3G运行得非常好。直到我升级到Lion和Xcode 4.1之后,问题又出现了。请参阅以下链接以获取更多信息:
  • http://apple.stackexchange.com/questions/18876/xcode-4-1-stuck-trying-to-load-debug-symbols-from-iphone-3g
- Ricardo Sanchez-Saez
6个回答

8
很可能您的问题可以通过重新授权设备来解决:
  1. 如果您的iPhone已连接到计算机,请拔掉它

  2. 在Xcode中,显示组织器(窗口->组织器)

  3. 设备区域中,单击您的设备并删除它

  4. 为了保险起见,退出Xcode然后再重新启动它。

  5. 再次打开组织器,然后将您的iPhone插入计算机。

  6. 告诉Xcode是的,您想要授权该设备

  7. 如果一切正常,Xcode现在将会下载4.2.1的设备信息

如果这不起作用,则建议您再次执行步骤,但将步骤4替换为从计算机中删除所有Xcode痕迹,然后重新安装它。包括整个Developer文件夹。


可能需要更彻底的清理。重新安装Snow Leopard?那只会浪费我的时间。 - Jesse Armand
你可能没有完全卸载Xcode。为了真正删除所有低级别的东西,打开终端并输入 sudo <Xcode>/Library/uninstall-devtools --mode=all 是必要的。 - Matthew Frederick
据说如果你不像那样通过命令行卸载它,会留下一些东西,这些东西会阻止你进行真正的全新安装。 - Matthew Frederick
嗯,那么唯一明显的事情就是将设备恢复为非越狱状态,然后再尝试。 - Matthew Frederick
我那时候无法激活它。我越狱设备是为了能够解锁和激活它,而不仅仅是为了黑客攻击。 - Jesse Armand
显示剩余3条评论

5
最新的Xcode+SDK版本不支持iOS 4.2.1,因为它发布在最新补丁出现之前。Xcode的组织器(Organizer)有一个新功能,尝试直接从设备下载调试支持文件,但显然对某些人存在一些(可能与越狱相关的)问题。
iOS 4.2.1与4.2相似,因此可以强制Xcode使用4.2支持文件来调试4.2.1设备。要做到这一点,只需转到/Developer/Platforms/iPhoneOS.platform/DeviceSupport文件夹,并手动将Symbols子文件夹和/或DeveloperDiskImage.*文件从4.2 (8C134)复制到4.2.1 (8C148)(或者无论组织器为您的设备创建了哪个发行版文件夹)。

这在我的情况下起作用了。我有一个安装了iOS 4.2.1的越狱iPhone 3G。谢谢! - meetpd
在这个组织者将iPhone识别为启用调试的设备之后,但实际的调试无法启动。程序停留在闪屏界面上。在GDB中,我可以看到如下消息: 警告:检测到与加载的库不匹配的UUID - 在磁盘上是: /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox - Vitaly S.

2

Jailbroken 3GS / 4.2.1

我尝试了Matthew Frederick的建议,但没有成功。有人解决了这个问题吗?


编辑

请注意,我使用了越狱的3GS和非越狱的3GS。 解决方法,需要一个非越狱的iPhone 3GS,并安装4.2.1(8C148a)版本

  1. 删除/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148a)
  2. 连接非越狱的iPhone 3GS,并安装4.2.1(8C148a)版本
  3. 打开Xcode和Organizer
  4. 通过单击组织者中的“用于开发”按钮来为新iPhone配置开发环境。
  5. 让它从中提取调试符号,重新创建/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148a)
  6. 拔掉它,从组织者中删除

此时,您可以再次调试越狱的iPhone了。 干杯!


我尝试过非越狱的iPod4和越狱的iPhone 3G(两者都运行4.2.1)。看起来只有相同的设备才能用于这个技巧。所以我要在我的城市找到一个非越狱的iPhone 3G的人 :) - Vitaly S.
Jorge,你能试一下吗?请你设置一个断点并到达那段代码吗?因为现在我可以使用断点启动我的应用程序(在你的建议之后),但是当应用程序到达断点时,我会收到相同的消息“数据格式化程序暂时不可用...” - Vitaly S.
Vitaly,你找到没有越狱的iPhone 3G了吗?如果是这样-你能上传文件到任何文件共享服务并发布链接吗?或者直接将它们发送到my_first_name.my_second_name@gmail.com(来自帐户的名称:) - Valerii Hiora
@JustinAmberson你还需要symbols文件夹吗?如果你确实需要,我可能能够获得它们。 - jlmendezbonini
好的,请放心,我会将它们保存在Dropbox中,以便永久保留 =) - Daddy
显示剩余4条评论

1
为了摆脱每次将iPhone呈现给XCode时(重新)收集调试符号的问题(实际上什么也没做),一个简单的解决方法是将以下文件复制到空的4.2.1(8C148)文件夹中:DeveloperDiskImage.dmg和DeveloperDiskImage.dmg.signature。这样,XCode就能识别设备,您就可以调试代码,但没有IOS框架的调试符号。不过,gdb控制台仍然可用,您可以使用它来调试您的代码(带有调试符号)。顺便说一下,您始终可以使用模拟器来获得完整的IOS支持 :-)

0

我的完全未越狱的iPhone在4.2.1上也会出现这种情况,并且收到完全相同的消息和问题。这是XCode最新版本中的新功能,因此可能存在错误。


1
我喜欢你说“功能性”这个词 :) - KevinDTimm

0
除了Fnord的建议之外,另一个建议是确保在越狱的iPhone 3G设备上未启用多任务处理或PwnageTool中的“重新启用功能”选项。
我不确定这是否会产生影响。但是,如果我们真的想在iPhone 3G的实际情况下进行测试,这样做是合理的。

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