我的iPhone應用程序最近被拒絕從App Store「因爲它發射崩潰」。但是,我無法再現這次崩潰。該應用程序可以在模擬器和具有Apple測試它的相同硬件和軟件的設備上完美工作(iPhone 3.1運行iOS 4)。他們發給我的崩潰日誌說「沒有可用的Backtrace」,所以我無處看到我的代碼。這裏有一個例子:iPhone與「沒有跟蹤」崩潰
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線程狀態」或「二進制映像」部分中提取任何有用的信息嗎?
謝謝!
*更新:*我已經在另一臺運行iOS 4的iPhone上首次安裝了應用程序,但仍無法重現崩潰。我開始認爲這是構建時參數(如庫或目標版本)的問題。根據崩潰報告,是否有可能我的應用程序的代碼被執行了?
好主意;我嘗試重置模擬器,但沒有運氣。而在啓動時運行的代碼很簡單,但我會三重檢查它。 – tba 2010-07-11 07:36:07
測試需要在設備上完成。不能在模擬器中重現崩潰沒有意義。 – Rab 2010-07-11 18:51:19