Моносимвольный сбой из-за трассировки стека Xamarin.Droid, не включая AotID
Я пытаюсь использовать моносимволик для обозначения следов стека, созданных в выпускной версии нашего приложения. В настройках сборки.csproj Release DebugSymbols, Optimize, MonoSymbolArchive были установлены в True, а DebugType был установлен в Full.
Кажется, что при создании Release успешно генерируется папка msym. MyApp.Droid 7-13-18 3.35 PM.apkarchive/mSYM/com.myco.myapp.apk.mSYM
который содержит много папок с именами GUID, некоторые из которых содержат один файл.msym, а некоторые содержат файлы.dll и.pdb. Как я вижу в своей трассировке стека, похоже, что моему MyApp.Droid был присвоен GUID 7216aaa9c1294991b8b2782974cfb879
и глядя в каталог с тем же именем, я действительно вижу MyApp.Droid.dll и MyApp.Droid.pdb. Просматривая папку msym, я также нахожу четыре других каталога, в каждом из которых содержится файл с именем MyApp.Droid.msym, который, как я предполагаю, означает, что по какой-то причине он разбивает msym на несколько файлов.
Использование трассировки минимального стека
at MyApp.Droid.MainActivity.OnCreate (Android.OS.Bundle savedInstanceState) <0x7c92255fd8 + 0x0008b> in <bf44972100fb4c2b8f5abcae2e982c3f>:0
(или более полная, более длинная трассировка стека) mono-symbolicate path/to/MyApp.Droid 7-13-18 3.35 PM.apkarchive/mSYM/com.myco.myapp.apk.mSYM myStackTrace.txt
, моносимвольный скрипт завершается со следующей ошибкой:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Mono.SymbolManager.GetOrCreateSeqPointInfo (System.String aotid) [0x00057] in <e1e81dae0fc04bc2a59e1766bbba201f>:0
at Mono.SymbolManager.TryResolveLocation (Mono.StackFrameData sfData) [0x0002e] in <e1e81dae0fc04bc2a59e1766bbba201f>:0
at Mono.Symbolicate.SymbolicateAction (System.Collections.Generic.List`1[T] args) [0x00034] in <e1e81dae0fc04bc2a59e1766bbba201f>:0
at Mono.Symbolicate.Main (System.String[] args) [0x0017f] in <e1e81dae0fc04bc2a59e1766bbba201f>:0
Читая исходный код моносимволиката, кажется, что он терпит неудачу из-за попытки проанализировать aotid из трассировки стека, который, кажется, не содержит. Насколько я понимаю, эта аотида будет второй частью в последних угловых скобках, таких как:
at MyApp.Droid.MainActivity.OnCreate (Android.OS.Bundle savedInstanceState) <0x7c92255fd8 + 0x0008b> in <bf44972100fb4c2b8f5abcae2e982c3f#4ed70d01848e11d51d01dac0cb2d805e>:0
где 4ed70d01848e11d51d01dac0cb2d805e
соответствует одному из имен папок, в которые входит файл MyApp.Droid.dll.msym. Действительно, вручную найти папки, которые содержат MyApp.Droid.dll.msym и добавить #foldername
в качестве суффикса в угловых скобках я нахожу тот, который работает (не приводит к падению) после нескольких попыток.
Почему я не получаю AOTID в трассировке стека, или как я могу обойти это?