2016-12-15 6 views
2

Я использую Xamarin.iOS, который является оберткой C# вокруг Objective-C. Этот отладочный вопрос для C#.Могу ли я получить полезную информацию из аварийной информации, как это?

У меня есть аварии, которая произошла в задаче, но эта информация не является полезным, здесь:

*** Terminating app due to uncaught exception 'System.AggregateException', reason: 'System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. ---> Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0. 
    at Newtonsoft.Json.JsonTextReader.ParseValue() <0x100b32280 + 0x004b4> in <filename unknown>:0 
    at Newtonsoft.Json.JsonTextReader.Read() <0x100b2ed80 + 0x00057> in <filename unknown>:0 
    at Newtonsoft.Json.JsonReader.ReadAndMoveToContent() <0x100b28ee0 + 0x0001f> in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType (Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonContract contract, Boolean hasConverter) <0x100b78c70 + 0x00097> in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, Boolean checkAdditionalContent) <0x100b6f700 + 0x0008f> in <filename unknown>:0 
    --- End of inner exception stack trace --- 
---> (Inner Exception #0) Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0. 
    at Newtonsoft.Json.JsonTextReader.ParseValue() <0x100b32280 + 0x004b4> in <filename unknown>:0 
    at Newtonsoft.Json.JsonTextReader.Read() <0x100b2ed80 + 0x00057> in <filename unknown>:0 
    at Newtonsoft.Json.JsonReader.ReadAndMoveToContent() <0x100b28ee0 + 0x0001f> in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType (Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonContract contract, Boolean hasConverter) <0x100b78c70 + 0x00097> in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, Boolean checkAdditionalContent) <0x100b6f700 + 0x0008f> in <filename unknown>:0 <--- 

Исходя из этого, я знаю, что где-то У меня есть JSON быть deserialised, который получил HTML (начинается с <).

Теперь я прокрутка остальной части аварии информации, и я начал думать об этой информации:

Thread 1: 
0 libsystem_kernel.dylib    0x000000018ca1c16c 0x18ca1b000 + 4460 
1 CoreFoundation      0x000000018da17cec 0x18d93b000 + 904428 
2 CoreFoundation      0x000000018da15908 0x18d93b000 + 895240 
3 CoreFoundation      0x000000018d944048 0x18d93b000 + 36936 
4 CFNetwork       0x000000018e135fd0 0x18e067000 + 847824 
5 Foundation       0x000000018e55347c 0x18e449000 + 1090684 
6 libsystem_pthread.dylib    0x000000018cb00850 0x18cafd000 + 14416 
7 libsystem_pthread.dylib    0x000000018cb00760 0x18cafd000 + 14176 
8 libsystem_pthread.dylib    0x000000018cafddac 0x18cafd000 + 3500 

Что эти цифры означают? И могу ли я получить какой файл или даже какой метод был вызван из этих чисел?

+0

Вы можете символизировать эти номера с помощью Xcode или с помощью команды atos terminal-https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1- СИМВОЛИКАЦИЯ – Darshana

ответ

1

Вышеуказанная информация аварии показывает список активных кадров во время аварии

1 CoreFoundation      0x000000018da17cec 0x18d93b000 + 904428 

Детали выше образец рамы

1 : Frame Number 

CoreFoundation : Framework Name 

0x000000018da17cec : Address of the called Function 

0x18d93b000 : File Name 

+8740 : Line of the Code 

Чтобы получить имя функции и имя файла из адреса, мы должны symbolicate аварии отчет.

Часть журнала сбоев, опубликованная в этом вопросе, показывает все стандартные рамки iOS по умолчанию, поэтому даже после символики вы не можете получить такую ​​полезную для нее информацию. Вам нужно искать активный фрейм с именем приложения, который может дать вам полезную информацию.

Существует много сторонних библиотек, которые мы можем использовать для отчетов о сбоях, таких как Fabric, Hockey App, Flurry.

Hockey ap, похоже, поддерживает Xamarin, надеюсь, что это поможет.

+0

Все, что я должен был сделать, это символизировать отчет. Теперь я использую hockeyApp, и я загружаю свои dsyms им каждый раз, когда я загружаю сборку, так что каждый краш может быть немедленно отображен – vrwim