繁体   English   中英

如何调试从后台返回时发生的崩溃

[英]How to debug a crash which happened when come back from background

从后台通过应用程序图标返回时发生崩溃。

但是我在控制台日志中看不到任何详细信息。 有一个信号终止,但我们找不到信号编号。

<FBApplicationProcess: 0x117bcb930; Maixxxx; pid: 1762> exited abnormally via signal.

Process exited: <FBApplicationProcess: 0x117bcb930; Maixxx; pid: -1> -> <FBApplicationProcessExitContext: 0x17103f820; exitReason: signal; terminationReason: (none)>

控制台日志

重现我的崩溃的程序如下:

  1. 点击应用图标启动应用。
  2. 以普通用户身份使用该应用。
  3. 按回家将其置于背景中。
  4. 等几分钟。
  5. 单击跳板屏幕上的应用程序图标以再次使用它。
  6. 应用程序崩溃并退出。

由于崩溃只发生在从后台返回时,并且需要输入背景几分钟,因此无法在附带lldb的调试模式下运行。

我没有使用任何背景功能。

此外,我没有在Fabric的Crashlytics中看到任何崩溃报告。 所以我认为信号处理程序既不能被调用?

如何调查这类问题?

这些事情可能很艰难,我从类似的经历中知道。 在不了解您的应用程序的情况下,我只能提供提示并且没有明确的答案,但也许这会对您有所帮助。

尽管有两种方法可以尝试“捕获”一个过程,但是使用直接记录print等的后备和繁琐的方法。

但是,首先让我强调“背景”并不总是相同的,不幸的是人们常常松散地使用这个术语。 根据状态转换导致崩溃的原因,您可能会运气不佳,只需使用手动记录进行实验。 应用可以在后台,即不在前台,但仍在运行。 连接调试器时通常会出现这种情况,否则无法完成其工作。 或者,它们可以由OS暂停(或甚至终止)。 调试器可以防止这种情况,您可能已经想到了这一点。

可能对您有帮助的两件事是:

  1. 如果您正在使用后台提取,即“从后台模式返回”,如您所述,它会自动发生,您可以在构建方案的“运行”配置部分中激活“由于后台获取事件而启动”选项。

  2. 从主屏幕运行您的应用程序,使用主页按钮将其置于后台并稍等一下(过去您可能已经这样做了,以便了解发生崩溃的时间)。 你的应用程序应该最终进入暂停状态(但你无法在AFAIK的任何地方看到它)。 不要通过多任务UI再次将其置于前台,只需通过“Debug - Attach to process”菜单再次附加调试器。 这应该让您的应用程序从挂起状态回到后台状态,在那里可能真的发生崩溃(如果从背景到前台发生这种情况,您可能会像往常一样调试它)。 希望调试器已经及时完成了它的附加,否则我就没有想法了。 :(

我个人并没有遇到过这个具体问题,但我知道背景材料可能很棘手。 也许这个讨论也对你有所帮助(我也从那里获取了部分信息)。

在真实设备上以调试模式运行应用程序。 按Home键将应用程序发送到后台并继续调试。 然后,您可以将应用程序置于前台并继续调试,或在applicationWillEnterForeground上放置断点。

您无法在真实设备上进行调试。 附加调试器后,您的应用程序将永远不会进入真实设备的后台模式。

您可以尝试在模拟器上调试它。 无论如何,请检查您的类属性并将属性设置为strong以确保缺少属性不会发生这种情况。

我已经阅读了几个有FBApplicationProcess的StackOverflow问题。 通常,这个是在应用程序启动时丢失数组或其他内容时发生的。

最好的祝福。

我已经完成了上述所有答案,所有人都给出了正确答案。 不过,我想与大家分享我的观点。

  1. 如果应用程序在任何具有调试模式和有线插件的iOS真实设备上运行,甚至在模拟器上运行,则App将永远不会在后台运行。

  2. 如果应用程序在没有电线插件的情况下运行或在没有Xcode的情况下运行(在iPhone中直接启动应用程序),然后将应用程序置于后台,该应用程序将在接下来的3分钟后台运行。 3分钟后,应用程序将自动暂停并从主线程中删除。 现在,当我们再次打开应用程序时,它将被认为是一个新的发布。

  3. 如果您的应用具有任何背景功能,那么即使在后台,您的应用也会处于活动状态,但在此期间您无法进行任何UI更改。

  4. 要在后台保持应用程序活动,必须正确处理背景功能。 即。 如果您的应用中使用了“应用程序处于前景”状态,则应用程序在后台运行时间不会超过3分钟。 因此,如果您想在后台连续运行您的应用程序,您必须在Info.plist文件中用电池耗尽字表示正确的原因,否则Apple会拒绝它。

  5. 请告诉我有关您问题的更多详细信息。

谢谢。

崩溃日志仍可在您的测试设备上使用。

要获取崩溃日志,请尝试以下步骤:

  • 通过USB将测试设备连接到Mac。
  • 启动Xcode。 转到Windows>设备和模拟器。
  • 从屏幕左侧的设备部分选择您的设备。
  • 选择“查看设备日志”按钮。
  • 识别并选择崩溃日志以查看内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM