写点什么

CrashSight 接入上报常见问题及解决方案

作者:WeTest
  • 2022 年 4 月 22 日
  • 本文字数:2549 字

    阅读完需:约 8 分钟

CrashSight 为全平台(移动/PC/主机)开发者提供崩溃异常捕获、上报、分析和规避方案等全链路闭环专业服务。帮助开发者快速定位并解决异常问题,降低产品崩溃率,提升用户体验。

国内:https://crashsight.qq.com

出海/海外:https://crashsight.wetest.net

今天给大家整理了在使用 CrashSight 在接入、上报过程中遇到的常见问题:


1 iOS 接入、上报常见问题

1.1 接入 SDK 后崩溃没有上报

● 检查 AppId 是否设置正确;

● SDK 的初始化是否在 Crash 之前完成;

● 网络是否可用;

● 在测试时若之前有上报突然不上报了,可能是触发了 CrashSight 的流量保护机制,请卸载 App 后再测试(并不会影响真实用户 Crash 准确率)

● 是否有使用具有捕获 Crash 功能的其他第三方组件,包括但是不限于 firebase/fackbook/google mobile ads. 某些情况下会存在兼容问题,如果使用了上述组件,请联系管理人员协助处理。

● 是否是触发了 iOS 的强杀机制导致的崩溃。系统强杀,APP 内没有处理时间,无法上报。主要触发条件为长时间卡顿(约 5s 以上),或者一定时间内 CPU/GPU/内存占用过高等情况。

#1.2 上传符号表为什么需要 java 环境

● 我们符号表提取工具依赖于 java 环境,符号表工具只提取必要的信息。

#1.3 符号表上传失败提示 uuid 不匹配

● 每次构建,符号表的 uuid 都会发生改变,所以需要当次构建生成的符号表文件才能还原当次构建后上传的 crash。

#1.4 依赖库后缀名不同如:libc++.dylib 与 libc++.tbd

● 使用 iOS SDK 9.0 以上编译时添加依赖库 libc++.tbd,9.0 以下添加 libc++.dylib

#1.5 不同 SDK 的功能都有哪些

● iOS SDK:用于收集 iOS App 的崩溃、卡顿,统计 App 的运营数据等

● Cocos Plugin:用于收集基于 Cocos 引擎的 App 中的崩溃,脚本错误等

● Unity Plugin:用于收集基于 Unity 引擎的 App 中的崩溃,脚本错误等

● Unreal Plugin:用于收集基于 Unreal 引擎的 App 中的崩溃,脚本错误等


2 Android 接入、上报常见问题

#2.1 开发过程中怎样查看 CrashSight 的 Logcat 日志

● 参考参数配置,初始化时,设置调试模式为 True。

#2.2 为什么相同的用户一天上报了几百条 Crash?会消耗用户流量吗?

● 单一用户的上报是有流量限制的,在达到流量限制之前 CrashSight 都会正常上报。

#2.3 每个版本都要配置符号表吗

● 是的。

#2.4 不配置还原符号表会影响异常上报吗?会有什么影响?

● 还原符号表的配置并不会影响上报。

● 如果没有配置,网页端将只能显示原始的崩溃堆栈,不利于崩溃问题排查。

#2.5 接入 SDK 后崩溃没有上报

● 检查 AppId 是否设置正确;

● SDK 的初始化是否在 Crash 之前完成;

● 网络是否可用;

● 在测试时若之前有上报突然不上报了,可能是触发了 crashsight 的流量保护机制,请卸载 App 后再测试(并不会影响真实用户 Crash 准确率)

● 是否有使用具有捕获 Crash 功能的其他第三方组件,包括但是不限于 firebase/fackbook/google mobile ads. 某些情况下会存在兼容问题,如果使用了上述组件,请联系管理人员协助处理。

● 是否因为内存不足而被系统强杀(这种情况常发生在低端机,发生前往往极度卡顿)。


3 Windows SDK 接入、上报常见问题

1. 无法上报崩溃:请依次检查下列情况

⦁ 检查 dll 是否正确加载;

⦁ 检查 setTQMConfig 函数是否已经执行;

⦁ 制造的崩溃是否属于 CrashSight 支持的范围(特别注意的是,throw/raise 类型的崩溃,不属于支持范围内);

⦁ 初始化之后,是否有 TQM Center.exe 进程运行;

⦁ TQM64/GameBabyConfig.dat 文件是否与 dll 同级的 GameBabyConfig.dat 文件内容一致。

⦁ 崩溃产生后,是否在 TQM64/dump 下生成 dmp 文件,如无,请检查 1-3

⦁ 崩溃产生后,生成了 dmp,但是在“崩溃分析”页面没有看到上报,请检查 4-5

⦁ 如果 1-7 均无问题,还是没有崩溃上报,请在 2 个配置文件中添加下列配置。替换 appid 为项目 appid(请务必在发布版本中删除该配置,否则会导致信息泄露)。替换后运行制造崩溃,将两个 GBLog 文件夹下的 log 文件发给 CrashSight 开发,人工协助排查问题

<LogOutput>appid</LogOutput>


4 Unity SDK 常见问题.

#4.1 初始化 SDK 后,为什么仍然无法捕获上报 C#异常?

a. 检查是否有其他存在注册 Application.RegisterLogCallback(LogCallback)的逻辑,由于系统默认 LogCallback 是单播实现,所以只能维持一个回调实例,你可以调用 CrashSightAgent.RegisterLogCallback(CrashSightAgent.LogCallbackDelegate)方法来替代日志回调的注册;

b. 检查对应平台的 SDK 组件是否已经集成到项目中

d. 检查测试用的崩溃是否被代码内部捕获了


5 还原常见问题

#5.1 安卓堆栈未还原

⦁ 请确认已经上传符号表,并且可以在崩溃分析->单条崩溃->符号表页面看到符号表文件已上传。(Java 符号表文件可以不用关注)

⦁ 请确认上传的符号表不是原始的 so 文件,而是经过处理的符号表。处理上传方法请查看[符号表上传工具及使用说明](https://wetest.qq.com/help/documentation/10679.html) 或者[符号表蓝盾插件自动化上传](https://wetest.qq.com/help/documentation/10691.html) 。

⦁ 请确认上一步上传的 so 文件为带符号的文件。特别的 Unity 引擎的 libunity.so 通常是不带符号的,需要使用引擎目录下或者编译过程中的的 libunity.sym.so 文件进行制作。

#5.2 iOS 堆栈未还原

⦁ 与安卓类似,请确认已经上传符号表,并且可以在崩溃分析->单条崩溃->符号表页面看到符号表文件已上传。

⦁ 非项目使用的模块崩溃,例如 Foundation 模块等,均为系统模块。系统模块的符号表由 CrashSight 统一管理,只有一些很旧的版本,上线时间极短的版本可能不会被还原,其他版本还原问题可与管理员联系。

#5.3 重还原

当确保符号表已上传后,可以通过点击“重试还原堆栈”对堆栈进行重新还原。

#5.4 Unreal 回调函数 return TCHAR_TO_UTF8(*message)

TCHAR_TO_UTF8 宏定义只能由于函数参数,小于 128 字节在栈分配,大于 128 字节在堆分配;如果大于 128 字节,分号结束后,堆立即释放,产生野指针; 正确用法:

写在最后:

CrashSight 为开发者提供异常捕获,上报和分析服务。帮助开发者快速定位并解决异常问题,降低产品崩溃率,提升用户体验。支持移动/PC/主机全平台,主要包括:

平台:

⦁ 移动端:iOS、Android

⦁ PC 端:Windows

⦁ 主机端:Nintendo Switch、PS4、XBOX

语言:

⦁ C/C++/C#、Java、Object-C/Swift

引擎:

⦁ Unity,UE4,Cocos

立刻前往官网:

国内:https://crashsight.qq.com

出海/海外:https://crashsight.wetest.net

用户头像

WeTest

关注

还未添加个人签名 2021.08.09 加入

还未添加个人简介

评论

发布
暂无评论
CrashSight 接入上报常见问题及解决方案_WeTest_InfoQ写作社区