# 符号表格式


# 说明:上传日志测试前提前上传符号表。


# 1. Java 符号

多个mapping文件请自行处理追加到一个文件中,最终命名为mapping.txt,并打包成zip文件,如果同时包含so符号,可以把so文件打包在一起。


# 2. Android so库

保证符号表的so文件与发布的so文件同,so压缩前超过100MB的,请向岳鹰平台管理员申请资源

如果一个版本里包含同文件名,不同架构的so,可以压缩到不同的目录中,反符号化时需要通过buildid去关联;

建议编译时使用-g参数,带上debug信息,崩溃堆栈可以解析到代码行级,实际发布时,再使用strip命令去掉调试信息;如果不带debug信息,则只能定位到函数名级

下列情况下,需要so文件带有buildid

    • 不同CPU架构的so文件名一样,放在不同的路径下
    • 同一个应用版本里,可能有多个版本的so库,使用了动态加载的技术

 

如何生成带buildid的so,请检查编译参数,确保没有带"--build-id=none",如果还是没有buildid,可以添加编译参数"ld_flags += -Wl,--build-id=sha1"

可通过file命令检查so文件是否带buildid,调试信息。

image.png



# 3. iOS OC符号

     请编译生产的dSYM文件夹直接zip压缩即可,如果有第三方库,可以把第三方库一起打包,目录层次不作要求。如果没有保存好dSYM文件,也可以上传未加密的ipa文件作为符号表,可以定位到函数名,无法定位文件名及行号。iOS 符号表通过UUID做关联,可以通过以下命令查看符号表的UUID。


xcrun dwarfdump --uuid 符号表文件路径



检查与日志中image块的可执行模块的uuid是否一致。


# 4. 符号文件建议示例

# 4.1 Android


image.png


# 4.1 iOS

image.png