美文网首页
UIApplicationEndBackgroundTaskEr

UIApplicationEndBackgroundTaskEr

作者: 程序狗旭旭旭 | 来源:发表于2020-08-17 16:35 被阅读0次

最近遇到这么一个问题,我们app 在iOS14的设备上切到后台就会crash. OK 那我们来调试一下。

首先连上Xcode, 编译切后台来还原crash的经过。 然后crash了。

控制台显示`Message from debugger: Terminated due to signal 9`。并且上边还有`[BackgroundTask] Background task still not ended after expiration handlers were called: <_UIBackgroundTaskInfo: 0x2835e06c0>: taskID = 64, taskName = CCTLogWriter, creationTime = 64357 (elapsed = 0). This app will likely be terminated by the system. Call UIApplication.endBackgroundTask(_:) to avoid this.` 这样一段。很明显了,crash 是由于后台线程没有关闭导致的。那我们怎么定位哪个没关闭呢?只看这log 是看不出来东西的,我们就要用到UIApplicationEndBackgroundTaskError()这个debug调试了。

首先在Xcode顶部找到 View-> Navigators > Show Breakpoint Navigator,然后再添加BreakPoint的地方`Add Symbolic Breakpoint`, symbol处输入UIApplicationEndBackgroundTaskError.  这样就可以了。

然后重新编译,重现crash, 发现断点起作用了。发现问题出在了一个叫 GDTCCTUploader 的upload方法里了。然后发现这是firebase 三方库的东西。更新firebase, ok!

这里再提醒一点,如果用到了UIApplication.shared.beginBackgroundTask. 一定要有对应的UIApplication.shared.endBackgroundTask

相关文章

  • UIApplicationEndBackgroundTaskEr

    最近遇到这么一个问题,我们app 在iOS14的设备上切到后台就会crash. OK 那我们来调试一下。 首先连上...

网友评论

      本文标题:UIApplicationEndBackgroundTaskEr

      本文链接:https://www.haomeiwen.com/subject/gcpqjktx.html