Мое приложение для iPhone недавно было отклонено из App Store «потому что он падает при запуске». Однако я не могу воспроизвести этот крах. Приложение прекрасно работает как на симуляторе, так и на устройстве с тем же аппаратным и программным обеспечением, на котором Apple тестировала его (iPhone 3.1, работающий под управлением iOS 4). Аварийные журналы, которые они мне прислали, говорят «Нет возврата назад», поэтому мне нечего искать в моем коде. Вот пример:iPhone Crash с «No Backtrace»
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-потока» или «Двоичные изображения» в отчете о сбое?
Спасибо!
* обновление: * Я установил приложение впервые на другой iPhone под управлением iOS 4 и по-прежнему не может воспроизвести сбой. Я начинаю думать, что это проблема с параметрами времени сборки, такими как библиотеки или целевые версии. Основываясь на отчете о сбое, возможно ли, что какой-либо код моего приложения был выполнен?
Хорошая идея; Я попытался сбросить симулятор, но не повезло. И код, запускаемый при запуске, тривиален, но я все равно проверю его. – tba
Тестирование должно проводиться на устройстве. Невозможность воспроизвести крушение в симуляторе бессмысленно. – Rab