Трудновоспроизводимый сбой не отображается в HockeyApp или журналах устройств.

Два дня назад один из моих бета-тестеров игр для iPhone столкнулся с вылетом в очень определенный момент игрового процесса. В HockeyApp не появлялись отчеты о сбоях (я видел другие отчеты из той же сборки).

Прошлой ночью я тоже столкнулся с аварией. К сожалению, я не был подключен к отладчику. Когда я вернулся к компьютеру, я подключил свое устройство, но не нашел новых журналов сбоев. Обратите внимание, что на моем устройстве установлена ​​бета-версия iOS8, и я пытался использовать как XCode5, так и XCode6 для поиска журналов сбоев.

Этот сбой чрезвычайно трудно воспроизвести; за 30+ часов комбинированного геймплея это произошло только 3 раза. Это не проблема памяти; сбой происходит в очень определенный момент игрового процесса, и перезапуск приложения приводит к еще одному очень специфичному симптому ... просто недостаточно специфичному для отладки;)

Я читал о том, как HockeyApp и т. д. ловят журналы сбоев раньше, но должен признать, что у меня не хватает опыта. Что может привести к тому, что журнал отсутствует? HockeyApp каким-то образом «поглотил» его или он вообще никогда не создавался?

Что еще более важно, как я могу отследить проблему?


person Zane Claes    schedule 22.08.2014    source источник


Ответы (1)


Это Андреас из HockeyApp.

Позвольте мне начать с некоторых общих замечаний:

  1. В случае сбоя или если iOS убивает приложение (что технически не является сбоем), iOS всегда будет записывать отчет о сбое на устройство, за одним исключением: если устройству отказано в синхронизации данных об использовании и сбоях с Apple. он будет хранить только ограниченное количество отчетов, а затем распечатывать отчет только в консоли.

  2. Сторонние фреймворки никогда не могут «потребить» сбой, поэтому iOS не сможет создать отчет. Несколько сторонних платформ в приложении могут обнаруживать необработанные исключения, но только одна платформа может обнаруживать сбои, вызванные сигналами.

  3. HockeyApp SDK с настройками по умолчанию не может обнаруживать сбои, например. вызвано переполнением стека. Это можно активировать, включив исключения Mach, см. http://hockeyapp.net/help/sdk/ios/3.5.6/Classes/BITCrashManager.html#//api/name/enableMachExceptionHandler

  4. HockeyApp SDK имеет экспериментальную поддержку для обнаружения некоторых убийств приложения iOS. Это также необходимо активировать отдельно, см. https://github.com/bitstadium/HockeySDK-iOS/blob/develop/Classes/BITCrashManager.h#L224

Не имея отчета о сбое iOS, нельзя сказать, почему HockeyApp не может сообщить о сбое. Мое предположение, что iOS не показывает отчет о сбоях на устройстве, заключается в том, что на устройстве уже слишком много отчетов о сбоях, а синхронизация отключена.

  1. Подключите устройство к Xcode
  2. выберите устройство и еще раз проверьте отчеты о сбоях на устройстве.
  3. Смоделируйте новый сбой
  4. Проверьте еще раз, будет ли это храниться на устройстве.
  5. Проверьте журнал консоли, если там что-то есть.
  6. Удалите старые отчеты о сбоях с устройства, если предположение верно, чтобы освободить место для новых отчетов.
  7. Как только у вас будет отчет об этом сбое, возьмите его и свяжитесь с нами через службу поддержки, чтобы мы могли помочь вам проанализировать его.
person Kerni    schedule 22.08.2014
comment
Спасибо! Я смоделировал сбой через CFRelease(NULL); и получил правильный отчет о сбое. Вчерашнего сбоя до сих пор нет в журналах устройства, но этот сбой есть. Так что место определенно есть, и логи точно генерируются. Думаю, я попробую включить № 3 и № 4 в соответствии с вашими предложениями... - person Zane Claes; 22.08.2014
comment
Я очень сомневаюсь, что какой-либо сторонний SDK сможет предоставить отчет, когда iOS ничего не предоставляет. Когда проблема возникает снова, вы должны немедленно проверить вывод консоли на наличие чего-либо подозрительного в дополнение к проверке отчета. - person Kerni; 22.08.2014
comment
Чувак, это грубо :( Хотя я думаю, что с этим ничего не поделаешь. - person Zane Claes; 22.08.2014