跳到主要内容

研发期实践

利用多维度分析,快速判断问题原因通用步骤

CrashSight会根据特定规则自动将问题分类。通俗来讲,您在页面上看到的问题并不特指某一次上报,而是一类具有相同特征的上报的集合。CrashSight默认展示该分类下最近上报的一条数据,您可以点击“查看更多记录”来查看该分类中的其它上报信息。

利用分类的特性,CrashSight可以协助您更多维地分析问题。您可以依序浏览以下部分,来获取对解决问题有帮助的信息:

堆栈

堆栈是问题分类的主要依据,同时也是定位问题的首选项。CrashSight具备堆栈在线还原的能力,通过已还原的堆栈,您可以精确定位到哪一行代码导致这个问题发生。

系统日志

CrashSight支持部分平台的系统日志抓取,例如Android logcat和iOS NSLog。您可以通过系统日志了解问题发生前一段时间的运行状况。

设备分布信息

部分问题和设备类型是强相关的,查看设备信息分布,从机型、品牌、gpu、存储、内存等多角度分析问题出现的可能原因

用户行为

用户的特定行为也可能导致问题发生,查看地域和运行时长信息可以帮助您复现问题

更多自定义数据

CrashSight支持丰富的自定义数据上传方式,前往使用自定义数据辅助分析问题章节探索更多个性化业务数据的上传方式。

非业务原因崩溃问题分析通用步骤

崩溃可能触发的原因是多方面的,有些是业务逻辑问题,有些则是其它原因导致的。对于非业务逻辑导致的问题,虽然开发者不能采取直截了当的方式解决,但是通过了解问题发生的原因,可以采取行动避免问题发生,达到提高产品质量的效果。

检查磁盘空间

综合磁盘剩余空间和运行堆栈,推测磁盘占用率高的原因,从而避免磁盘占用导致的问题。 例如:如果一个崩溃的问题,所有机器磁盘剩余空间都很低,那么优先怀疑磁盘空间不足导致。

检查内存空间

判断问题发生时的内存使用情况,如果偏高,可能需要针对内存使用进行优化 例如:如果一个崩溃的问题,内存大部分都所剩无几,优先考虑内存不足导致的资源申请或者访问失败。

检查系统日志

查看崩溃发生的系统日志,问题发生前的系统信息可能会提示到一些关键线索,找出可能导致问题的系统原因

综合检查机型、运行时间等信息

对于问题表现出的特征,如只在特定机型上出现,或只在长时间运行后出现,进行有针对性的优化

比如集中在某几个机型上:

使用自定义数据辅助分析问题

CrashSight支持丰富的自定义数据上传方式,帮助您定制化地获取信息。

自定义数据(KV)

自定义数据以KV形式写入,支持覆盖,比较适合用来上报状态类的数据;同时,CrashSight支持根据数据类型对自定义数据的筛选和分析,用它来上报数值类、字符串类以及序列类信息也是一个比较好的选择。

自定义日志

自定义日志通过接口写入,其逻辑与常规的日志类接口(如Unity log、UE log)类似,适合用来上报程序运行时不断产生的日志信息。

回调数据

回调会在问题发生时被调用,天然拥有问题发生时的第一现场。回调数据适合上传问题发生时的现场信息。

附件

附件通过设定文件绝对路径来上传,支持的数据量最大,适合用来上传大小比较大的数据。

通过日志内容找到CrashSight网页上的记录

在本地测试时发生崩溃,测试人员能从测试机上拿到崩溃时的日志信息,但是不知道对应的CrashSight网页记录是哪一条。此时可以按照如下步骤查找页面记录。

在日志中查找expuid

expuid是CrashSight SDK为上报生成的uuid,每一次上报都是唯一的。

安卓在logcat中搜索expuid

iOS在系统日志中搜索expuid

Windows在程序包中找到CrashSight64.dll,它的同一目录下会生成CrashSightLog文件夹,里面是CrashSight的运行日志。在日志中搜索expuid

通过“高级搜索”查找记录

前往项目的“高级搜索”页,搜索条件为“客户端侧上报ID”,搜索值填入expuid,即可搜索到对应的网页记录