打开多任务时 iOS 应用程序崩溃,0x8badf00d 异常

问题描述

我的应用程序有问题。我们的一些用户遇到了系统终止应用程序的崩溃,当他们打开多任务时会发生这种情况。我检查了测试设备的日志文件,有两种类型的日志。

  1. appName.ips.beta
  2. stacks+appName.ips

第一种类型包含足够的信息,我符号化了日志信息并修复了错误

但是第二种类型的文件不包含“线程 0 名称:调度队列:com.apple.main-thread ...”信息。所以不知道怎么理解。

我从日志中找到了此信息。

“异常”:“0x8badf00d”

异常代码 0x8badf00d 表示应用程序已被 iOS 终止,因为发生了看门狗超时。应用程序启动、终止或响应系统事件的时间过长。

如何从此类日志中获取更多信息?

提前致谢!

logs

解决方法

据我所知,您已经发现 0x8badf00d(发音为“eat bad food”)会被看门狗进程抛出,因为它阻塞了主线程太长时间。这通常是由应用程序启动期间的某些阻塞触发的,但它可能发生在您阻塞主线程的任何地方。例如,如果你有一些缓慢的事情发生,在这个过程中锁定 UI,用户自然倾向于跳转到主屏幕,以确保他们的手机正常,当他们跳回你的应用程序时,如果它是仍然阻塞,看门狗可能会咬你。

Understanding the Exception Types in a Crash Report 。另见Addressing Watchdog Terminations。但是,简而言之,通过采用异步模式,始终避免阻塞主线程(例如,使用慢速同步任务)。如果没有看到阻塞主线程的代码,我们就无法获得更具体的信息。

但是在您的崩溃报告中,请关注主线程的堆栈跟踪,线程 0,希望是符号化的,因为它可能被某些同步任务阻塞,这会导致看门狗进程终止您的应用程序。