文档

符号表配置

更新时间:

符号表文件可以用于解析混淆崩溃调用栈,便于问题分析和解决。本文介绍如何将符号表文件上传到ARMS控制台。

背景信息

符号表配置分为应用Mapping文件、应用So文件、JS Mapping文件配置,各文件作用说明如下。

应用Mapping文件

对于Java语言,可以通过字节码反编译成Java代码。为了防止外部人员通过破解应用安装包来得到真实代码,通常需要使用ProGuard等混淆工具对Java代码进行混淆。混淆工具会使用随机字符串替换实际的方法和变量名,降低代码可读性,提供了一定的安全性。

同时为了方便开发人员排查问题,混淆工具也会生成一个mapping.txt文件,里面记录了真实代码到混淆代码的映射关系,只有通过mapping.txt对错误调用栈解混淆后,才能看到真实的出错堆栈。

应用So文件

C/C++代码编写的项目在编译之后,会同时生成一个包含函数和变量地址映射信息的debug.so文件,该文件可以将机器码还原成C/C++代码。

为了使生成debug.so带有buildId信息,需要在Android.mk文件中加上一行:

LOCAL_LDFLAGS += -Xlinker --build-id

此后,NDK构建的So文件将带有一个字段(.note.gnu.buildid)专门存放构建的UUID。

查看So文件UUID的一个方法如下(需要readelf或类似工具):

readelf -x .note.gnu.build-id libxxx.so

上传文件中存在着这个应用包的符号表,可以根据崩溃日志和符号表文件来定位到崩溃的位置。

JS Mapping文件

对于JavaScript文件,为了减小体积和提高传输效率,通常需要对JavaScript代码进行混淆。混淆工具会使用随机字符串替换实际的方法和变量名,这也同时降低了代码可读性。

为了方便开发人员排查问题,混淆工具也会生成一个*.js.map文件,里面记录了真实代码到混淆代码的映射关系,只有通过map对错误调用栈解混淆后,才能看到真实的出错堆栈。

上传文件

  1. 登录ARMS控制台
  2. 在左侧导航栏中单击App监控

  3. App监控页面,单击目标App右侧的崩溃分析

  4. 在左侧导航栏选择设置 > 符号表

  5. 选择对应的文件页签,然后单击上传文件

  6. 在上传面板中选择文件后,单击确定完成上传任务。

  • 本页导读 (1)
文档反馈