我的 iPhone 应用程序最近被 App Store 拒绝,“因为它在启动时崩溃”。但是,我无法重现此崩溃。该应用程序在模拟器和具有 Apple 测试过的相同硬件和软件的设备(运行 iOS 4 的 iPhone 3.1)上都能完美运行。他们发给我的崩溃日志显示“没有可用的回溯”,所以我无处可查我的代码。这是一个例子:
Incident Identifier: [...]
CrashReporter Key: [...]
Hardware Model: iPhone3,1
Process: [MyApp] [1172]
Path: /var/mobile/Applications/[...]-3F1B-4504-A572-[...]/[MyApp].app/[MyApp]
Identifier: [MyApp]
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2010-07-08 [...]
OS Version: iPhone OS 4.0 (8A293)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xfe42c648
Highlighted Thread: 0
Backtrace not available
Unknown thread crashed with ARM Thread State:
r0: 0x00002388 r1: 0x00000000 r2: 0x3e2b47c8 r3: 0x00000108
r4: 0x2fe00000 r5: 0x00000000 r6: 0x00000000 r7: 0x00000000
r8: 0x2ffffb48 r9: 0x2fffecfc r10: 0x00000000 r11: 0x00000000
ip: 0x00000010 sp: 0x2ffffb4c lr: 0x2fe08907 pc: 0xfe42c648
cpsr: 0x40000010
Binary Images:
0x1000 - 0x78fff +[MyApp] armv7 <23af3d265c3086eaceb51cc649eb794f> /var/mobile/Applications/[...]-3F1B-4504-A572-[...]/[MyApp].app/[MyApp]
0x2fe00000 - 0x2fe26fff dyld armv7 <697ae459733a7f0b6c439b21ba62b110> /usr/lib/dyld
[many more libraries...]
我怎样才能开始调试这个?这有可能是构建问题而不是编码错误吗?我可以从崩溃报告的“ARM 线程状态”或“二进制图像”部分中提取任何有用的信息吗?
Thanks!
*更新:* 我第一次在另一台运行 iOS 4 的 iPhone 上安装该应用程序,但仍然无法重现崩溃。我开始认为这是构建时参数(例如库或目标版本)的问题。根据崩溃报告,我的应用程序的代码是否可能被执行?
See 技术说明 TN2151:了解和分析 iPhone 操作系统应用程序崩溃报告。符号通常可以帮助您追踪崩溃的根源,但由于没有回溯,它在这种情况下可能没有帮助。
不要在模拟器上进行测试。模拟器构建和设备构建是针对两个不同硬件的完全独立的编译。仅仅因为它在模拟器上运行,就不会告诉您任何有关设备故障的信息。
请记住,Apple 会对应用程序进行压力测试,方法是在 iOS4 上启动应用程序,而其他应用程序会占用大部分内存。您也需要在测试设备上执行此操作。
您很可能必须将测试设备恢复为默认设置才能复制苹果所做的测试。然后在启动您自己的应用程序之前打开所有可能的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)