0

当我在 iPhone 3G 上使用 iOS 5.0 SDK 进行测试时,我收到了一堆警告(尽管应用程序运行良好)。当我在 iPhone 4 上测试时,我没有收到警告。看起来它与armv6有关。首先是我的设置和一些信息:

Xcode 版本:4.2
iPhone 型号:iPhone 3G
SDK:最新 iOS(iOS 5.0)
架构:$(VALID_ARCHS)
有效架构:armv6 armv7
iOS 部署目标:iOS 3.1

编辑:我有两部 iPhone 3G。一台运行 iOS 3.1.3,一台运行 iOS 4.2.1。警告只发生在运行 3.1.3 的那个上。

这是前 6 个警告。有 35 个警告看起来非常相似(我可以取消这些吗?):

警告:找不到目标文件“/var/tmp/AppleMBX/AppleMBX-48~174/AppleMBX.build/MBXGLEngine.build/Objects-normal/armv6/fb.o” - 没有可用于“/SourceCache/AppleMBX”的调试信息/AppleMBX-48/MBXGLEngine/fb.c”。

警告:找不到目标文件“/var/tmp/AppleMBX/AppleMBX-48~174/AppleMBX.build/MBXGLEngine.build/Objects-normal/armv6/get.o” - 没有可用于“/SourceCache/AppleMBX”的调试信息/AppleMBX-48/MBXGLEngine/get.c”。

警告:找不到目标文件“/var/tmp/AppleMBX/AppleMBX-48~174/AppleMBX.build/MBXGLEngine.build/Objects-normal/armv6/fog.o” - 没有可用于“/SourceCache/AppleMBX”的调试信息/AppleMBX-48/MBXGLEngine/fog.c”。

警告:找不到目标文件“/var/tmp/AppleMBX/AppleMBX-48~174/AppleMBX.build/MBXGLEngine.build/Objects-normal/armv6/mbxlite_mp.o” - 没有可用于“/SourceCache/AppleMBX”的调试信息/AppleMBX-48/MBXGLEngine/mbxlite_mp.c”。

警告:找不到目标文件“/var/tmp/AppleMBX/AppleMBX-48~174/AppleMBX.build/MBXGLEngine.build/Objects-normal/armv6/eglglie.o” - 没有可用于“/SourceCache/AppleMBX”的调试信息/AppleMBX-48/MBXGLEngine/elglue.c”。

警告:找不到目标文件“/var/tmp/AppleMBX/AppleMBX-48~174/AppleMBX.build/MBXGLEngine.build/Objects-normal/armv6/drawtex.o” - 没有可用于“/SourceCache/AppleMBX”的调试信息/AppleMBX-48/MBXGLEngine/drawtex.c”。

4

2 回答 2

0

这里的问题是项目的调试符号没有存储在链接库中,而是存储在编译的目标文件(.o 文件)中。

现在,在您的开发环境中,您可能有这些文件可用,因此您看不到任何警告,但是当您将项目移动到其他设备时,这些文件不再存在,但是您的库仍然引用这些目标文件(例如调试目的)。

你想要做的是从你的库中去除调试符号(它们是在你使用 -g 选项编译时生成并附加到你的二进制文件的符号表中的)。

编译后,对项目中的每个二进制文件使用该命令strip -S binaryfile

注意:这将从这些符号表中删除调试符号表,并且在调试时您将无法再看到符号和信息。

于 2012-10-23T13:36:09.983 回答
0

它可能与 iPhone 3 和 4 之间更改的最大图像尺寸有关。

“关于你的问题:每个 iOS 设备对加载纹理的大小都有一些限制。iPhone 最多(我认为)型号为 3GS,只能加载最大尺寸为 1024x1024 像素的纹理。iPad 和 iPhone 4 可以处理高达 2048x2048。”

http://forum.sparrow-framework.org/topic/strange-bad-access-when-running-on-device

于 2012-03-01T18:46:47.290 回答