Получить полную информацию из PLCrashReport
Я реализовал приложение, которое использует PLCrashReporter в качестве метода обработки Crash. и он извлекает отчет, который можно переключить в удобочитаемый формат.
Incident Identifier: E125648C-6BCF-4F69-9950-C8CDFB0535D3
CrashReporter Key: e681450ca18f97638adb5f7295a4af24103b92ae
Hardware Model: iPad5,4
Process: CrashReport [6918]
Path: /private/var/mobile/Containers/Bundle/Application/FA6CA909-C229-457F-9EF0-35B889481B63/CrashReport.app/CrashReport
Identifier: net.example.CrashReport
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2016-05-15 16:40:51.199 +0430
Launch Time: 2016-05-15 16:40:44.122 +0430
OS Version: iOS 8.4.1 (12H321)
Report Version: 105
Exception Type: EXC_CRASH (SIGTRAP)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 1
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 CrashReport 0x00000001000663a4 0x100060000 + 25508
1 CrashReport 0x00000001000662ac 0x100060000 + 25260
2 CrashReport 0x0000000100066304 0x100060000 + 25348
3 UIKit 0x0000000187b411e8 0x187afc000 + 283112
со всеми подробностями о приложении и модели оборудования, но без строки или имени класса!
Я много искал и узнал, что я должен использовать процесс символизации.
- некоторые сказали использовать.dSYM, но приложение еще не в магазине Apple
- каким-то другим решением было работать с report.crash и тому подобным, но я не смог найти этот файл в своем приложении
- Я хочу, чтобы строки кода отправлялись из приложения, а не обрабатывали его из XCode или других инструментов
в заключение: мне нужны некоторые коды для извлечения номера строки и функций из PLCrashReport, пожалуйста, используйте Swift. Я не очень хорош в Objective C.
Спасибо
1 ответ
Вы должны символизировать отчет о сбое, например, используя тот же инструмент, который использует XCode, который является
symbolicatecrash.pl
, Здесь много обсуждений, которые ссылаются на это, следующая ссылка дает один из многих ответов, которые охватывают это: Как символизировать аварийное завершение iOS для просмотра журналов сбоев вручнуюТакже вам нужен точный dSYM, который был создан при сборке, которая вызвала сбой, без dSYM вышеупомянутый инструмент не может предоставить никаких полезных данных и особенно не может предоставить вам имена классов, имена методов, имена файлов или номера строк. DSYM генерируется каждый раз, когда вы создаете приложение в XCode. Это не имеет ничего общего с App Store. Проверьте папку сборки, где вы найдете пакет приложения. Если вы этого не видите, значит, вы изменили настройки сборки. На следующей странице показан параметр сборки, который необходимо включить: https://support.hockeyapp.net/kb/client-integration-ios-mac-os-x-tvos/how-to-solve-symbolication-problems
Невозможно получить номера строк непосредственно из вашего приложения, так как двоичный файл не предоставляет необходимую информацию в любое время. Вам нужно символизировать отчет о сбое с помощью вышеупомянутого инструмента и вышеупомянутого dSYM, чтобы получить номера строк.
Так как невозможно получить номера строк, используя только двоичные файлы вашего приложения, их также невозможно получить во время выполнения. Следовательно, не имеет значения, кодируете ли вы что-то в Swift или Objective-C, это не имеет значения.