React Native 应用程序偶尔会在生产环境中崩溃,但没有 Bugsnag 报告

ReactNative app crashes occasionally on production with no Bugsnag report

我的一位同事正在开发旧版 ReactNative 应用程序。 JavaScript 和 Javaland 中都有相当多的代码,后者与 HERE Maps SDK 有关。

我们的两个客户每天都会遇到多次崩溃,我们无法找出原因,因为我们没有错误报告。 Bugsnag 是去年年初(大约 2020 年 1 月)安装的,我们在那里没有任何可以帮助我们的东西。 Google 控制台中也找不到任何内容。应用程序刚刚停止。

为了帮助我们进行调试,我们添加了一个日志系统,该系统通过专用 API 调用将调试信息发送到我们的后端。 它大致包括记录“功能 A 的开始”、“功能 A 的结束”等,以便我们知道应用程序在做什么。我们并不总是启用它,因为它会使应用程序更加不稳定。

与此同时,当用户重新启动应用程序时,我们设法通过 Firebase Auth 发送的登录事件了解应用程序何时崩溃。 在崩溃时查看我们的日志对我们没有帮助,因为 1) 它们看起来与一切正常时一样,并且 2) 我们没有涵盖所有方法调用,因为有太多方法调用(在 JS 和 Java).

我们的用户 运行 安装在拖拉机驾驶室中的 Samsung Galaxy Active Tab 2 上的应用程序。有些人使用 Galaxy Active Tab 3 也有这个问题。

我们通过各种理论 运行 :

我们使用客户的凭据登录(他们知道)并且无法重现该问题。

客户帮助我们找到问题的兴趣正在慢慢消失,所以我们不能继续要求他们每周安装一个补丁版本。

起初只有一个客户端,但现在我们至少有 3 个用户抱怨莫名其妙的崩溃。

我们有点不知所措。

有没有人知道终极包罗万象的图书馆?或者我们可以在平板电脑上获取更多信息的系统日志?

在此先感谢您的帮助!

以下推理基于硬件故障。如果您的软件(应用程序或操作系统)没有发生重大变化,则可能出现这种情况:

Tab 2 于 2012 年发布,因此我们谈论的是一款使用时间长达 9 年的设备。如果用户都使用相同的硬件,并且软件有一段时间没有更改,则可能是某种硬件故障。这可能与拖拉机的振动、随着时间的推移受潮有关,或者仅仅是因为他们使用平板电脑的次数比你使用平板电脑的次数多。可能有些东西(半)松动或内存(SSD 或 RAM)可能开始出现故障。

当然也可能是软件错误,但如果您长时间未更新,则不太可能 - 假设平板电脑也未更新。

您能否与一位顾客交换您的平板电脑。最好是最常遇到问题的客户。然后观察问题是否解决。 这样,您就可以确定它是否与平板电脑(损坏)或使用环境(拖拉机)有关。

如果更换平板电脑后问题仍然存在,则可能是环境或软件问题,但您已经排除了硬件问题。 如果问题得到解决,您就会确定是硬件出了问题。

经过多次测试,我的同事们成功地重现了错误并找到了根本原因:Java 土地上一种方法的内存管理不善。 所述方法负责改变地图上标记的方向,但当标记的方向改变时它会复制标记。它导致了高内存消耗,当它达到某个点时 Android 会杀死所有 运行 个应用程序。

我的同事修复了漏洞,我们很好!现在进入下一个错误。 :)