众所周知, Bugly是一个比较优秀的异常上报工具, java上层的崩溃和底层的崩溃都可以收集得到,在市面上得到了非常广泛的应用,但是对于一些ndk开发方面, 却一直就存在一个比较头疼的问题, 就是bugly即使捕获到了底层的堆栈,但是是长这个样子的:

对于一个研发而言,拿到这种堆栈信息,基本是没有什么价值的, 那么怎么由这个看不懂的格式变为可以看懂的格式呢? 首先呢,我们推荐bugly官方提供的方式–上传符号表至bugly, 原则上符号表传对了就能解析出来的, 至少我用我们自己写的demo这样做是可以解析的,但是对于某些特殊情况, 出现部分崩溃堆栈, 即使我传对了符号表但依旧解析不出来的问题。 针对这种异常情况, 我找到了一种偏冷门的解析方式。 针对以上的两种方式,我接下来进行较为详细的讲解。 (首推bugly官方, 尽管某些情况下解析不出来,但是毕竟是官方推荐的。)

第一种官方推荐的方式–bugly 上传符号表

bugly官方提供了上传符号表的工具,下载了这个工具执行相应的命令即可将符号表进行上传!下载链接请点击: https://bugly.qq.com/v2/sdk?id=f67d1ca3-5db9-43d9-8329-99c8f0df3982 这个文件里面有使用文档,建议看一下。

首先先下载一下那个工具哈!然后我们打开工具进到有 buglyqq-upload-symbol.jar 这个文件的目录中,执行以下命令:

键入命令如下:

java -jar buglyqq-upload-symbol.jar -appid 你申请的appId  -appkey 你申请的appKey -bundleid 包名 -version 你应用对应的版本号 -platform Android -inputSymbol 你的符号表地址

如果你的命令输入的正确,会看见诸如以下打印:

图中有一个比较重要的概念,就是标记的那个uuid, 这个uuid据我测试得出,是与符号表内容有关的,应该是按照业界统一的规范计算出来的, 类似于md5,但不是md5,也就是,假设你电脑上的代码没有变过,编译出来的符号表的 uuid,就会算出一样的结果。 那么这个uuid在bugly上具有什么意义呢? 下图是bugly原始的不可读的堆栈:

我们会发现不可读的堆栈的每一行后面都标记了和刚才算的uuid同样格式的字串,这个就是uuid!只不过我截的图和我自己上传的符号表不匹配,所以我两个图中的uuid。 其实这个uuid即使是我们自己用logcat截,都会有这个。

原则上讲, 你上传的符号表的uuid 和 bugly截取到的日志里面的字符一样,应该就可以解析,我用自己demo测试是可以解析出来的。

但是不知道为什么。就是bugly会出现一些日志即使传了正确的符号表照样解析不出来的问题, 我甚至怀疑bugly采用的解析是不是和我们用的不一样。对于实在解析不出来的情况,可以参考接下来的方式进行解析。

第二种兜底方式–自己手动解析

首先要提到的是,此操作的一切前提是基于你有正确的符号表的情况。没有符号表的话你寸步难行。 既然我们上传的解析不对, 那只能自己把这些日志弄到本地,想办法改成能解析的格式。 我们看看bugly的堆栈

其实上面的日志,地址什么的都有了,对应的uuid 也有的, 这些信息对于我们已经是足够了的。有这些信息就有可能解! 把这些日志内容拷贝下来,写到一个文件中,然后改成如图所示的格式:

大约需要几个步骤

  • 1 在头部加上 连续16个 三个星 的格式。

    *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    
  • 2 将复制粘贴下来的内容一些不必要的信息删掉,网页上也会把bugly的行号粘贴下来的,没啥用,删掉
  • 3 注意uuid位置的字串, 我们需要改成 (BuildId: uuidxxxxxxxxxxxxxxxxxxxxx)这种格式, bugly上原始的是[armeabi-v7a::uuidxxxxxxxxxx]这种格式,我这种格式,用咱们自己的解析工具是解析不出来的, 所以需要整体替换为我们可以识别的格式。
  • 4 型号和真正的堆栈之间隔了一个TAB的距离。不加这种格式解析不出来。
    按照步骤改基本就可以改成上图所示的模样了。到了这里,你的这个文件基本是可以解析的状态了。接下来我们对这段日志进行解析!

按照步骤改基本就可以改成上图所示的模样了。到了这里,你的这个文件基本是可以解析的状态了。接下来我们对这段日志进行解析!

符号表解析命令

准备好你的符号表,这个十分重要! 符号表是打包的时候总会有一个这样的产出的,找找就找到了,执行命令:

~/android-ndk-r20b/ndk-stack -sym 符号表路径 --dump 带解析的日志 > 解析输出文件目录
例如:

~/android-ndk-r20b/ndk-stack -sym ./ --dump ./tombstone_06 > 06log.log

正常情况下就能解析出来了。

关于腾讯buglly符号表问题相关推荐

  1. Android-腾讯bugly符号表管理,上传so符号表、mapping符号表

    Android-腾讯bugly符号表管理,上传so符号表.mapping符号表 mac端运行记录 准备参数 在腾讯bugly官网下载符号表管理工具 使用符号表管理工具上传 注意事项: 更多其他页面-自 ...

  2. unity android 符号表,记录腾讯bugly关于符号表的配置

    Bugly bugly的熟练使用,可以帮助移动开发迅速定位线上bug,帮助解决问题.在使用过程中,我们需要知道什么是符号表,为什么要配置符号表. 符号表 符号表是内存地址与函数名.文件名.行号的映射表 ...

  3. android bugly 符号表,Bugly的符号表工具使用总结-iOS

    首先先说下bugly的崩溃统计是实时的,即你的app前脚崩溃,bugly后脚就会给你统计到,但是在统计崩溃信息的时候有的时候可能只给你记录了一个简单的崩溃信息,并不能详细的告诉你哪个类的哪个方法的哪行 ...

  4. 编译原理(文法、符号表)

    文法 在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则). 1个文法 G 是一个四元组 G = (VN , VT , S, P) ...

  5. 编译器设计-符号表-中间代码生成

    编译器设计-符号表-中间代码生成 Compiler Design - Symbol Table Compiler - Intermediate Code Generation 一.Compiler D ...

  6. 使用objdump objcopy查看与修改符号表

    使用objdump objcopy查看与修改符号表 动态库Linuxgccfunction     我们在 Linux 下运行一个程序,有时会无法启动,报缺少某某库.这时需要查看可执行程序或者动态库中 ...

  7. linux下动态库符号表,Linux动态库(.so)符号表

    最近编译libbinder.so发现system/lib/libbinder.so只有358K,但单独编译生成的obj/SHARED_LIBRARIES/libbinder_intermediates ...

  8. iOS符号表恢复逆向支付宝

    推荐序 本文介绍了恢复符号表的技巧,并且利用该技巧实现了在 Xcode 中对目标程序下符号断点调试,该技巧可以显著地减少逆向分析时间.在文章的最后,作者以支付宝为例,展示出通过在 UIAlertVie ...

  9. 给出一种符号表的组织方式和结构设计,要考虑数组类型和函数(不得与课件上的雷同)

    给出一种符号表的组织方式和结构设计,要考虑数组类型和函数(不得与课件上的雷同) 给出一种符号表的组织方式和结构设计,要考虑数组类型和函数(不得与课件上的雷同) 符号表的组织方式和结构设计: nameT ...

最新文章

  1. 20211119 Latex中参考文献中的人名怪字母如何输入
  2. stream() 求和_Java教程:Java8统计list中指定属性的最大、最小、平均值、求和
  3. python实验练习-类的多继承
  4. 51单片机之外部引脚及总线接口
  5. 再见 iTunes!苹果macOS Catalina 10.15正式版更新
  6. arm-linux启动,linux启动流程arm
  7. php整数和浮点数比较,php 浮点数怎么进行比较?
  8. 通过JAVA获取优酷视频
  9. 勤哲excel服务器端口协议,勤哲Excel服务器技术支持|Excel服务器常见问题解答
  10. pyhton爬取广州链家租房信息,并用tableau进行数据分析
  11. css样式给标签加上小手图标
  12. 纳韦斯托克斯方程的推导_一个方程的故事——纳维-斯托克斯方程(Navier-Stokes Equations)...
  13. C语言递归解兔子繁衍问题
  14. python数字转英文_GitHub - Ailln/en2an: 快速转化「英文数字」和「阿拉伯数字」
  15. 【如何拍出一条好的vlog】素材篇
  16. 计算机科学与技术论文摘要范文,计算机科学与技术论文范文两篇(2)
  17. 创客机器人比赛简讯_“让思维沸腾,让创造先行”——记我校参加同安区首届创客大赛活动报道...
  18. 攻防基础-木马病毒介绍
  19. 3D变电站物联网可视化虚拟仿真数字孪生系统
  20. abb变频器580系列改中文_ABB变频器ACQ580A介绍

热门文章

  1. 经验:调教200多个ChatGPT模型后的经验分享
  2. matlab CCA标准化,典型相关分析(CCA)附算法应用及程序
  3. 在微型计算机里1mb等于,在计算机中,1MB等于多少字节?
  4. 亚洲名人人脸数据库制作
  5. mysql插入\更新前+判断条件
  6. 申宝证券-弱势行情忌焦忌燥
  7. Exp2 后门原理与实践_20151208丛俐宇
  8. 报错vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in render: “TypeError: Cannot read property ‘length‘
  9. (一)Activiti 数据库25张表——流程历史记录表19(ACT_HI_COMMENT)
  10. mysql 执行概况_转mysql源码分析之SQL执行过程简介