我正在尝试使用mono-symbolicate工具(间接通过这个很酷的helper service)检索我的发布版本异常堆栈跟踪中的行号(登录到HockeyApp。)
我非常确定我的发布版本配置有适当的设置来生成必要的调试符号:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-Prod|AnyCPU' ">
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
<AndroidLinkSkip>System.Core;System.Runtime.Serialization;Android.Gms.Gcm</AndroidLinkSkip>
<AndroidSupportedAbis>armeabi-v7a;arm64-v8a;armeabi;x86;x86_64</AndroidSupportedAbis>
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
<MonoSymbolArchive>True</MonoSymbolArchive>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>true</Optimize>
</PropertyGroup>
下面是发布版本349的示例异常堆栈跟踪。与我的应用程序相关的代码行的哈希值为d69074b01bdc4aee9b338c440e2a3b69。请注意,我在哈希周围添加了空格,否则SO会隐藏它们。
android.runtime.JavaProxyThrowable: System.ArgumentOutOfRangeException: Index was out of range.
Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <896ad1d315ca4ba7b117efb8dacaedcf>:0
at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <896ad1d315ca4ba7b117efb8dacaedcf>:0
at RPR.Mobile.Droid.Fragments.PropertyDetails.PropertyDetailsFragmentBundle.UpdateLists() [0x001b4] in < d69074b01bdc4aee9b338c440e2a3b69 >:0
at RPR.Mobile.Droid.Fragments.PropertyDetails.PropertyDetailsFragment+<>c__DisplayClass9_1.<BuildDataTasks>b__5() [0x00022] in < d69074b01bdc4aee9b338c440e2a3b69 >:0
at RPR.Mobile.DataServiceStore+<>c__DisplayClass2_0.<Call>b__0 (System.Threading.Tasks.Task t) [0x00030] in < d69074b01bdc4aee9b338c440e2a3b69 >:0
at System.Threading.Tasks.TaskExtensionsShared+<>c__DisplayClass0_0.<Callbacks>b__0 (System.Threading.Tasks.Task t) [0x0000e] in < d69074b01bdc4aee9b338c440e2a3b69 >:0
at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke () [0x00024] in < 896ad1d315ca4ba7b117efb8dacaedcf >:0
at System.Threading.Tasks.Task.Execute () [0x00010] in < 896ad1d315ca4ba7b117efb8dacaedcf >:0
发布版本349于8月16日归档,是该日期唯一归档的版本。 (警告工具提示表示已启用调试。)
当我转到此版本的存档文件夹并向下钻取到mSYM文件夹时,没有与d69074b01bdc4aee9b338c440e2a3b69匹配的哈希文件夹。
由于没有匹配的文件夹,mono-symbolicate无法填充异常堆栈跟踪中的行号。问题是,为什么散列文件夹不与异常堆栈跟踪中的散列匹配?