Исключения в macOS не обнаружены? - PullRequest
0 голосов
/ 11 мая 2018

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

Я делаю как обычно, у меня всегда есть:

[Fabric with:@[[Crashlytics class], [Answers class]]];

первым делом в applicationDidFinishLaunching. У меня также есть:

  // We need these flags in order to capture crashes more reliably
  if (![[NSUserDefaults standardUserDefaults] boolForKey:@"NSApplicationShowExceptions"]) {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"NSApplicationShowExceptions"];
  }
  if (![[NSUserDefaults standardUserDefaults] boolForKey:@"NSApplicationCrashOnExceptions"]) {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"NSApplicationCrashOnExceptions"];
  }
  [[NSUserDefaults standardUserDefaults] synchronize];

непосредственно перед регистрацией в Fabric. Я также каждый раз загружаю dSYM и не вижу предупреждений от Fabric.

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

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

1 Ответ

0 голосов
/ 15 мая 2018

Это, вероятно, не дает полного ответа на этот вопрос, однако кажется, что перехватывать все исключения / сбои в macOS сложно (как упомянуто Fabric на их странице). Это не помогает, когда большая часть кода, на котором происходит сбой, является встроенным кодом C / C ++. Я не думаю, что это проблема Crashlytics как таковая, однако она выглядит как ограничение, когда некоторые сбои, в том числе принудительный вызов exit(..) глубоко внутри определенных сторонних библиотек, на самом деле не дают сбоев и, следовательно, не перехватываются.

...