zoukankan      html  css  js  c++  java
  • iOS Bugly符号化使用分析

    前言:一种愉快的开发方式,轻松快速定位BUG,跟开发中的BUG说再见!(公司里开展技术分享会,我就这对Bugly的使用做了个整理

    Bugly 使用分析

    作者:tangjianfeng

    时间:2018/10/23  

    腾讯Bugly简介:

    • Bugly是腾讯公司为移动开发者开发的服务之一,是面向移动开发者提供专业的Crash监控,崩溃分析等质量跟踪服务。
    • Bugly能帮助移动互联网开发者更及时地发现掌控异常,更全面的了解定位异常,更高效的修复解决异常。
    • 针对移动应用,腾讯Bugly提供了专业的Crash、Android ANR(application not response)、iOS 卡顿监控和解决方案。移动开发者(Android / iOS )可以通过监控,快速发现用户在使用过程中出现的Crash (崩溃)、Android ANR和iOS卡顿,并根据上报的信息快速定位和解决问题。

    【图文简介】:网址链接:https://bugly.qq.com/v2/workbench/apps

    一:崩溃信息查看 

    1设备版本信息查看:

     

    2时间查看:

    二:崩溃代码对象定位

    【说明】:先需要先确定下BUG项目版本,定位到Bugly出现crash记录下的版本。

    【案例】:Bugly上面的crash信息我们可以看到如下:

     

    【修正】:崩溃更改分析:

    1:   这里我们就可以快速定位到出现crash的调用处:[ResendEmailView keyboardWillShow]   是系统导致崩溃的代码。

    2: 出现错误的是一个ResendEmailView类的调用:keyboardWillShow的类方法的crash,报错是ResendEmailView未初始化的错误,也就是对象未实例化。

    3: 通过代码对象的定位,并且调试数据,相信问题就能迎刃而解。

    三:Bugly符号化需求 

    【1】什么是符号表?

      答: 符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:

                   <起始地址> <结束地址> <函数> [<文件名:行号>]。

    【2】为什么要配置符号表?

      答:为了能快速并准确地定位用户APP发生Crash的代码位置,

            Bugly使用符号表对APP发生Crash的程序堆栈进行解析和还原。

    【3】:BuglyiOS符号表配置官方文档入口

    https://bugly.qq.com/docs/user-guide/symbol-configuration-ios/?v=1492997248592 
    【4】结合项目分析

    说明:当Bugly上无显示代码类信息和方法调用,只显示地址信息的情况,如下图: 

    分析:如上,面板信息没有具体的对象或者方法调用信息,我们确定不了出错代码定位的时候,就需要应用到Bugly  符号化。

    四:安装Bugly符号化

    【第一步】:给Mac安装Java运行环境先需要安装Java环境,连接地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    -------选择MAC版本Java:如下图

    说明:打开链接,选择上图中红色圈出部分,下载Mac下的.dmg文件即可。

             下载完成之后双击便可一键式安装完毕。

    【第二步】:验证安装是否成功和查看Java版本

    —————终端指令输入:java -version

    —————结果如下:安装1.8的JavaJDK成功

     

    【第三步】:下载Bugly iOS符号表工具:

    下载Bugly iOS符号表工具连接地址  —>    Bugly iOS符号表工具

    【第四步】:关联项目同名的.dSYM文件

    ———在确定了BUG版本的情况下,路径操作如下:

    show in finder  ->  显示包内容->  dSYMs文件夹->  找到和项目同名的.dSYM文件,即(项目名.app.dSYM)。 

    【第五步】:准备整理文件:

    桌面新建一个文件夹,将找到的这个xx.app.dSYM文件和第一步下载的符号表工具包中“buglySymboliOS.jar”文件,放到新建的文件夹中,方便后续通过终端生成符号表.zip文件(我这里放在Desktop)。

    【第六步】:终端生成自己项目的符号表.zip文件

    ------终端指令:    java -jar /Users/a/Desktop/saicBugly_dSYM/buglySymboliOS.jar -i /Users/a/Desktop/saicBugly_dSYM/SaicCarPlatform.app.dSYM

    ------注意:路径需要改成自己文件的路径,上面是我本机的文件路径

    需要上传的zip文件已经生成:

    五:上传当前版本Bugly符号化文件

    【第一步】:确定Bugly的崩溃所对应的唯一标识符:UUID

    【第二步】:zip文件UUID验证:

    —————查看dSYM文件的UUID

    —————终端输入:xcrun dwarfdump --uuid <dSYM文件路径>

    案例输出:

    UUID: E0242B60-058C-39CF-ADAC-8C28979E469A (armv7) /Users/a/Desktop/saicBugly_dSYM/SaicCarPlatform.app.dSYM/Contents/Resources/DWARF/SaicCarPlatform

    UUID: D245BAE0-C338-3275-8CF1-6B6741BDB49B(arm64) /Users/a/Desktop/saicBugly_dSYM/SaicCarPlatform.app.dSYM/Contents/Resources/DWARF/SaicCarPlatform

    验证结果:版本确定是一致的。

    【第三步】:Bugly符号表管理 

    -------打开符号表管理

    ————为目标的BUG版本,上传先前合成的指定版本的压缩包: 

    找到BUG对应UUID:D245BAE0-C338-3275-8CF1-6B6741BDB49B

     

    ————上传成功需要等一会:

      

    【等四步】:成果果实收获

     

     这里已经符号化成功了。

    总结建议:在测试或者开发构建版本完成,保留构建版本文件,因为在应用符号化定位BUG时,需要Bugly上BUG的UUID对应构建版本文件dSYM的UUID,这样才能通过地址查找并确定崩溃原因。

    结尾语:Bugly的使用分析基本上就这些,最后希望大家加班少写点BUG。如有问题,欢迎交流,QQ:497609288

  • 相关阅读:
    vue项目webpack配置terser-webpack-plugin 去掉项目中多余的debugger
    difference between count(1) and count(*)
    为什么PostgreSQL WAL归档很慢
    mysql_reset_connection()
    Oracle使用audit跟踪登录失败的连接信息
    .NET Standard 版本
    ASP.NET Web API版本
    我是如何用go-zero 实现一个中台系统的
    JAVA中文件写入的6种方法
    MySql 常用语句
  • 原文地址:https://www.cnblogs.com/tangjianfeng/p/9872920.html
Copyright © 2011-2022 走看看