问答集锦第三期|U-APM FAQ 合集【2】
官方小二*更新于2021-12-9*
🙋大家好,继上一期为大家奉上的U-APM FAQ 问答集锦上集之后,我们收到了很多开发者们的关注。本着为开发者们解决实操问题的理念,本期继续为大家呈现U-APM FAQ下集,希望可以帮助到大家。
✨未来我们会一如既往地推出友盟+产品相关的FAQ,请开发者们敬请期待...
往期问答内容请戳👉:
问答集锦第一期 | U-Share分享到微信平台的20个常见问答
01
关于崩溃捕获的相关原理内容
问:已接入其他三方崩溃监控SDK,新增UAPM后为什么其他三方SDK捕获变少了?为什么接入UAPM后没有收到崩溃?
答:如您遇到接入UAPM后没有收到崩溃的情况,请先按照下面的排查流程进行排查,确保接入环节无误:
1. 无数据排查方式:请查看问答集锦第二期|U-APM FAQ 合集【1】
2. 此外也建议您阅读下面关于捕获原理信息:
a. Android
- Java崩溃:通过系统提供的UncaughtExceptionAPI捕获;
- Native崩溃:当系统遇到不可恢复的错误时会通过异常中断的方式触发异常处理流程,这些中断的处理被统一为了信号量。当应用程序接收到某个信号量时会按照内核默认的动作处理,如Term、lgn、Core、Stop、Cont。同时我们也可以通过sigaction注册接收信号来指定处理动作,比如捕获崩溃信息等;
- 一款应用在集成过程中可能会接入多款第三方SDK,除直接接入的崩溃监控SDK(如UAPM、Bugly、听云等外)可能存在多款第三方SDK都有崩溃/异常捕获功能。在不知道哪些SDK有捕获崩溃时可通过观察堆栈的调用顺序来观察,当出现不同平台捕获崩溃数据差异时可以通过判断堆栈的调用顺序来判断是在捕获过程中哪里出现的问题;
- 根据以往经验堆栈中会存在多个捕获器时,就会有一定概率发生ANR,造成后面的捕获器没有机会处理到崩溃;
- 由于堆栈顺序是初始化的倒序,则大概率最后初始化的SDK捕获到的崩溃会偏多,那初始化偏前面的则有可能受到前序SDK的影响。因此,如果把UAPM的SDK放到初始化最后时则可能UAPM收到的崩溃比其他SDK多。如果把UAPM的SDK 放到初始化前序,则可能UAPM收到的崩溃比其他的少;
- 另外当其他SDK不向下传递崩溃时,如果UAPM初始化在他们前面则也会出现UAPM无法收到崩溃的情况。
因此我们强烈建议大家把UAPM放在初始化的最后,以确保我们收到的崩溃符合预期。同时我们也建议大家不要多个监控崩溃SDK在APP内并存,在并存情况下,会由于其他SDK捕获机制的原因影响UAPM收到崩溃信息。
b.iOS
- iOS 通过注册mach异常捕获函数、cpp异常处理函数、OC 异常处理函数及信号异常处理函数对iOS的异常进行全面的捕获;
- 通常比较常见的是UAPM和Bugly共存,和安卓相似也会有初始化前后影响,当UAPM在bugly前初始化时,如果一个崩溃先被bugly捕获,他们不会向下传递崩溃,因此会导致UAPM无法收到崩溃,因此我们会建议大家最后初始化UAPM,以便UAPM先捕获崩溃,并将信号传递给其他的捕获器;
- 另一方面,通常ios的崩溃捕获SDK 都会有轮询机制(通过多次或延时重复注册信号处理函数),则不管谁先初始化,都可能受到轮询机制的影响,重复注册信号处理函数会覆盖掉之前的信号处理函数,从而获得优先处理异常信号的机会,因此也会在同时使用多个崩溃捕获SDK时出现某个比另一个多/少,或者采集不到的问题;
以上就是关于崩溃捕获相关的原理内容,我们还是建议大家在并行测试后,只选择一个崩溃监控产品 ,以减少多个崩溃监控共存带来的干扰。
02
关于SDK上报策略
问:U-APM SDK上报策略是什么?
答:1. iOS SDK上报策略

2. Android SDK上报策略
如果您创建了自定义异常,则需要存在自动采集的崩溃/ANR发生时一起上报。测试中请关注SDK上报策略,当日单设备达到限制后无法再上报数据。




03
关于查询错误明细
问:如何通过用户ID/umid查询错误明细?
答:1. 如果您需要查询某一个单用户在一段时间内的错误发生情况,可通过用户ID或者umid,用户ID是您上传的用户标示,可参考用户ID文档。
2. umid是友盟+根据设备信息生成的唯一标示,可以通过错误详情-设备信息中查看到,如下图(需要下拉展示):

3. 您获取到用户ID或者umid后,可按照如下操作进行查询:
- 点击分析模块下的用户细查功能;
- 输入umid或者用户ID作为查询条件,您也可以利用其他查询条件同时查询。

04
关于查看/筛选错误分布
问:如何通过渠道、设备、版本、系统、页面、运营商、时长、地域查看/筛选错误分布?
答:U-APM目前提供渠道、设备、版本、系统、页面、运营商、时长、地域的错误分布,支持查看与筛选,具体操作如下:
1. 您可以进入崩溃/ANR/自定义异常分析或者错误详情页面,点击错误分布;

接下来选择您想查看的分布维度,默认展示Top5的信息,如果筛选需要您先点击详情,再点击维度名称旁边的搜索icon,点击后即可输入您想查看的具体名称进行搜索。

2.您也可以通过用户细查功能,支持错误类型、版本机型、系统、运营商、地域的搜索维度,以及用户id。

⭐️敬请期待下一期FAQ问答干货,我们会继续为大家整理及发布解决开发者们实际问题的问答内容~