Включение пользовательских данных в аварийные дампы iOS - PullRequest
16 голосов
/ 13 декабря 2011

Hello Stack Overflow!

Простой вопрос для вас: возможно ли встроить пользовательские данные об ошибках в автоматически генерируемые аварийные дампы iOS, которые я получаю от своих пользователей, когда мое приложение падает на их устройстве?

Например: моя база данных SQlite по какой-то причине не работает (скажем, файл базы данных поврежден). Я не могу восстановиться после этой ошибки, поэтому выкидываю исключение и вставляю в исключение подробное сообщение об ошибке sqlite.Проблема в том, что аварийный дамп приложения не будет содержать сообщения об исключении, поэтому нелегко узнать, при каких условиях произошло аварийное завершение приложения.

Кто-нибудь знает, как поместить данные в отчет о аварийном дампе??Или у вас есть какой-либо другой рекомендуемый способ сообщения о сбоях в производстве разработчику?

Спасибо!

Ответы [ 2 ]

30 голосов
/ 15 декабря 2011

Нет, вы не можете добавлять свои собственные данные в отчеты о сбоях. Также невозможно получить доступ к сгенерированным iOS отчетам о сбоях автоматически из-за песочницы.

Итак, мое предложение таково:

  1. Для регистрации ваших собственных данных используйте Cocoalumberjack . Это намного быстрее, чем NSLog или другие каркасы журналирования, и имеет возможность записывать ваши сообщения в файл. Теперь, когда возникает исключение или когда вы хотите, зарегистрируйте это в файле. Но если ваше приложение вылетает в тот момент, когда вы добавляете что-то в файл журнала, оно, скорее всего, будет отсутствовать, поскольку приложение вылетало в тот же момент.

    Так что довольно трудно безопасно поймать точный оператор SQL. Но отчет о сбое должен дать вам достаточно информации, чтобы понять, что происходит, в дополнение к тому, что вы регистрировали, что делали раньше. Например. Вы можете записать строку поиска, используемую способом SQL, перед выполнением SQL.

    В общем, старайтесь не заходить слишком много.

  2. Для перехвата отчета о сбое вы должны использовать не что иное, как решение на основе инфраструктуры с открытым исходным кодом PLCrashReporter , которое может безопасно перехватывать сбои, даже когда ваше приложение уже находится в магазин приложений! Ловить исключений не рекомендуется, проверьте эту статью , чтобы понять почему!

    iTunes Connect также предлагает вам просмотреть некоторые отчеты о сбоях, но некоторые из них могут занять до 2 недель, но далеко не все, например, например. указал Камера + разработчики . Поэтому вам лучше использовать собственное решение.

    PLCrashReporter отправит вам стандартные отчеты о сбоях в формате Apple, готовые к символизации, чтобы вы знали, где происходит сбой в вашем коде, включая номера строк.

    Некоторые решения, основанные на PLCrashReporter:

    • QuincyKit : клиент с открытым исходным кодом + php-сервер, базовая группировка аварий, символизация может быть автоматизирована с вашего компьютера Mac (я являюсь разработчиком этого)
    • HockeyApp : Платный сервис, используется клиент QuincyKit, расширенная группировка аварий, символизация полностью выполнена на сервере (я один из разработчиков этого)
    • Bugsense : бесплатный сервис, символика объявлена ​​премиальной функцией
    • AppBlade : Платная услуга, символика неизвестна
    • Crashlytics : Частная бета-версия, неизвестные функции, похоже, что их решение основано на PLCrashReporter
  3. Предлагаемые решения позволяют либо отправлять данные автоматически при следующем запуске, либо запрашивать у пользователя согласие на отправку.

2 голосов
/ 21 января 2013

Отказ от ответственности как часто задаваемые вопросы: я разработчик для AppBlade.

AppBlade позволяет отправлять пользовательские параметры вместе с символическими отчетами о сбоях по состоянию на декабрь 2012 года.

Проверьте это! http://blog.appblade.com/news/2012/12/appblade-sdk-update-sessions-and-queues/

...