Bugsnag 是否检测 iOS 上的背景 oom 错误?

Does Bugsnag detect background oom errors on iOS?

有谁知道如何在 Bugsnag 上打开后台 OOM 报告?

Bugsnag 有一篇标题为 Automatic detection and reporting of OOM errors that explicitly mentions background OOMs being disabled by default, but the linked resource for turning on background OOMs (here) 的文章没有提及背景 OOM...

文章截图:

有谁知道如何在 Bugsngag 上打开后台 OOM 报告?这真的可能吗?

已删除后台 OOM 检测,因为它会生成许多有用的误报

一旦应用程序处于后台并且不再 运行ning iOS 可以出于多种原因将其终止/从内存中删除。没有可靠的方法(目前)让应用程序确定其之前的 运行 为何被终止。

来自 Bugsnag 支持团队的其他有用内容:

  1. Is a thermal kill (from your documentation) the same as a CPU Resource Limit termination as reported in the Energy Exception Reports section of the Xcode Organizer (link to WWDC video on CPU Resource Limits)? I do not believe so because I see a few energy exceptions in our Xcode Organizer, but I cannot find any corresponding errors in bugsnag. If not, does Bugsnag detect CPU Resource Limit Terminations?

这些不是一回事。 CPU Bugsnag 当前未检测到资源限制终止。 Thermal Kills 将被 Apple 报告为 EXC_CRASH (SIGKILL),异常代码为 0xc00010ff (https://developer.apple.com/documentation/xcode/understanding-the-exception-types-in-a-crash-report#EXC_CRASH-(SIGKILL))

  1. Does Bugsnag detect terminations due to App Hangs in the background on iOS? I see a couple of App Hang terminations in my bugsnag dashboard, but they are all foreground-only.

没有。当我们最初引入 App Hang 检测时,我们就习惯了。但是,从 v6.9.0(通过 PR#1075)开始,我们忽略了后台发生的应用程序挂起,因为它们被发现不可靠并导致许多 false-positives。在 PR 中,一个示例是 CABackingStoreCollectBlocking() 在清理图形资源时挂起。据报道,这最多可能需要 10 秒,因此会导致应用程序被系统看门狗终止,从而导致 false-positive.

  1. Does Bugsnag detect Illegal Instruction terminations (apple documentation) in the background and foreground on iOS? I have no illegal instruction terminations in my bugsnag dashboard, but I want to confirm whether this is due to a Bugsnag limitation or an issue with my app.

是的,这些将被报告为 EXC_BAD_INSTRUCTION(如果 enabledErrorTypes.machExceptions 被禁用,则为 SIGILL)。

  1. Does bugsnag detect background terminations due to Background Task Timeouts or File-Lock (apple documentation)?

Bugsnag 没有检测到其中任何一个。 Bugsnag 通常无法检测到 EXC_CRASH (SIGKILL) 崩溃,因为 OS 不会将它们通知应用程序。这就是为什么我们使用启发式方法来检测 OOM 和致命的应用程序挂起,以及为什么应用程序后台运行会导致 false-positive 应用程序挂起,因为在后台运行时不再依赖主线程监视器。

在后台,Bugsnag 检测并报告语言异常崩溃、内存访问崩溃 (EXC_BAD_ACCESS)、EXC_BREAKPOINT (SIGTRAP),其中包括例如Swift 运行时错误,EXC_BAD_INSTRUCTION (SIGILL),EXC_CRASH (SIGABRT) 和 EXC_ARITHMETIC。