SuperAPI AI 工具集

android-tombstone-symbolication

测试与质量

查看项目

更新于 10-16 00:04

技能介绍

用途:解析 Android tombstone 文件中 .NET 运行时的原生 backtrace 帧,将地址还原为函数名、源文件与行号,适用于 MAUI、Xamarin、Mono 等 .NET Android 应用的崩溃分析。

主要能力:解析 tombstone 或 logcat 崩溃输出中的帧,格式为 #NN pc OFFSET /path/lib.so (BuildId: HEX);按 BuildId 从微软符号服务器下载调试符号;用 llvm-symbolizer 符号化各帧;默认符号化所有线程;脚本可自动识别帧行并剥离 logcat 前缀。

覆盖库:libmonosgen-2.0.so(Mono)、libcoreclr.so(CoreCLR JIT)、libSystem..so 等 BCL 原生组件。NativeAOT 无运行时 so,运行时静态链接进应用二进制,libSystem..so 仍可符号化,应用本体需自身调试符号。

使用方式:先解析 backtrace,提取帧号、PC 偏移、库名与 BuildId;对每个唯一 .NET BuildId 下载符号,例如 curl -sL "https://msdl.microsoft.com/download/symbols/.debug/elf-buildid-sym-<BUILDID>/.debug" -o libmonosgen-2.0.so.debug;再运行 llvm-symbolizer --obj=libmonosgen-2.0.so.debug -f -C 0x222098。自动化脚本:pwsh scripts/Symbolicate-Tombstone.ps1 -TombstoneFile tombstone_01.txt -LlvmSymbolizer llvm-symbolizer,可选 -CrashingThreadOnly、-OutputFile、-ParseOnly、-SkipVersionLookup。

依赖:llvm-symbolizer(Android NDK 或 LLVM 14+),联网下载符号。注意偏移已是库相对地址,勿加减基址;符号 404 时不重试;llvm-symbolizer 不可用时用 -ParseOnly 输出命令,不安装 LLVM。

限制:不适用于托管 .NET 异常、非 .NET 库(如 libart.so)和 iOS tombstone。logcat tombstone 常缺 BuildId,可从 adb shell readelf -n、CI 产物或运行时 NuGet 包获取。预发布/内部构建可能无符号;llvm-symbolizer 建议 LLVM 14+;每个 .NET 库 BuildId 不同,需分别下载。资料未提供安装命令、收费、平台与效果的更多细节。