FAQ
1. 为什么异常堆栈提示未翻译?
异常堆栈提示未翻译的主要原因是相应的符号表没有上传。
可以点击 去上传 切到符号表Tab,根据指引上传指定的符号表。
确认符号表上传成功后,点击问题详情顶部的 手工还原 进行堆栈重还原。
手工还原堆栈后,异常堆栈发生了变化,根据异常堆栈生成的个例特征也会发生变化,会使得重还原后的个例,聚合到其他的Issue中。
2. 为什么网页上传,拖拽文件失败?
无论是SO符号表,dSYM文件还是Java mapping文件,都需要用户先用zip压缩后,再拖拽上传,上传组件只支持zip文件,不支持其他格式的文件。
- 对于mapping文件,一定要命名为mapping.txt,再用zip压缩成mapping.txt.zip,然后拖拽到上传区域中。
- 对于so文件,先将要上传的so文件用zip压缩,如libnative.so,zip压缩成libnative.so.zip,然后拖拽到上传区域中。
- 对于dSYM文件,先将要上传的dSYM文件用zip压缩,如 BuglyPro.dSYM, 压缩成 BuglyPro.dSYM.zip 后,拖拽上传 BuglyPro.dSYM.zip 文件。
3. 为什么网页上传符号表,提示成功,符号表文件的状态还显示未上传?
这种情况有两种可能:
情况一:符号表没有真正上传成功,需要参考前一个问题 (为什么网页上传,拖拽文件失败?),正确命名以及压缩符号表文件。
情况二:符号表文件已经上传,但是入库时间有延时,需要重新刷新页面。
4. 为什么上传mapping文件,提示成功,但是找不到上传的符号表文件?
这种情况,先尝试刷新页面,如果刷新页面后,依然找不到上传的符号表,或者符号表Tab显示该符号表文件未上传,可能是mapping文件没有正确命名。
- 对于mapping文件,一定要命名为mapping.txt,再用zip压缩成mapping.txt.zip,然后拖拽到上传区域中。
- mapping文件以 APP版本号 + 构建号 作为Key来识别,请查看版本号和构建号是否填写正确。
5. 上传符号表为什么需要java环境 ?
我们符号表提取工具依赖于java环境,符号表工具只提取必要的信息,可以大幅度减少需要上传的文件体积.
6. 符号表上传失败提示uuid不匹配 ?
每次构建,符号表的uuid都会发生改变,所以需要当次构建生成的符号表文件才能还原当次构建后上传的crash.
7. 不配置还原符号表会影响异常上报吗?会有什么影响 ?
不会影响异常上报!没有符号表,堆栈无法还原成代码中的类或方法及源文件行号,会对异常合并存在一定影响.
8. 每个版本都要配置符号表吗 ?
是的,每个App版本都需要对应一份符号表(Java的Mapping文件及SO的Symbol文件,applec++的dsym文件),配置只对设置的版本有效,重复配置将会覆盖.
9. Java崩溃堆栈中没有行号信息(如出现Unknown Source)?
在proguard配置中添加keep行号的设置,如:
-keepattributes SourceFile,LineNumberTable
10. Unity android项目需要配置符号表吗 ?
- Unity项目的Android工程生成的Java代码只有几个入口类,没有proguard混淆必要,所以无需配置符号表(即mapping信息)。
- Unity项目的Android工程中默认加载的几个Native库(libmono.so,libunity.so等)没有的debug版本,所以开发者也无法获得对应的符号信息进行配置。
注意: 如果开发者有自己开发独立的功能组件(.jar或.so)集成到Unity项目中,需配置相应的符号表信息(开启了“Development Build”选项,development文件夹里面的就是debug版本的so,可以用Bugly的符号表工具生成符号表文件并上传到版本管理).
11. 为什么我的符号表已经正确上传,堆栈还是不可读?
针对这种情况的解决方法:建议重新上传符号表,然后点击 手工还原 触发重新还原。
如果重新上传了仍然不行,这极有可能是符号表或抓取的堆栈本身问题,可以自己线下用地址还原看看系统抓的堆栈是否可以还原。
12. 怎样判断上传的符号表是否有效?
看是否有还原出源码文件名和行号。
13. 文件非法是什么意思?怎么处理?
上传的文件格式不对,系统扫描到不是符号表文件。 系统扫描规则是:遍历到一级文件目录下的so文件,否则认为非法。建议用单个so文件上传,后续版本会优化扫描规则。