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

时间:2019-07-04 01:34:16

标签: ios debugging crash signals

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

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

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

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

console log

重现崩溃的过程如下:

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

由于崩溃仅在从后台返回时发生,并且需要进入后台几分钟,所以我无法在带有lldb的调试模式下运行。

我没有使用任何后台功能。

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

如何调查这种问题?

5 个答案:

答案 0 :(得分:3)

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

使用print等进行直接日志记录的后备且繁琐的方法,尽管有两种尝试“捕获”进程的方法。

但是,首先让我强调一下,“背景”并不总是相同的,不幸的是人们经常松散地使用该术语。根据状态转换导致崩溃的情况,您可能会运气不佳,必须简单地使用手动日志记录进行试验。应用可以在后台运行,即不在后台运行,但仍在运行。通常在连接调试器时会出现这种情况,否则它将无法完成其工作。或者,它们可以被OS挂起(甚至终止)。调试器可以防止这种情况,您可能已经知道了。

可以帮助您的两件事是

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

  2. 从主屏幕运行您的应用程序,使用主屏幕按钮将其置于背景中,然后稍等一会儿(您过去可能已经这样做过,可以感觉到崩溃何时发生)。您的应用最终应该会进入暂停状态(但是您无法在AFAIK的任何地方看到它)。无需通过多任务UI再次将其置于前台,只需通过“ Debug-Attach to process”菜单再次附加调试器即可。这应该使您的应用程序从挂起状态返回到后台状态,在该状态下可能真正发生崩溃(如果是从后台运行到前台时发生崩溃,则您可能可以将其调试为通常)。希望调试器能及时完成附加,否则我就没主意了。 :(

我个人还没有遇到这个具体问题,但是我知道背景知识可能很棘手。也许this的讨论也可以为您提供帮助(我也从那里获取了部分信息)。

答案 1 :(得分:0)

在真实设备上以调试模式运行该应用程序。按“主页”按钮将应用程序发送到后台并继续调试。然后,您可以将应用程序置于前台并继续进行调试,或者在applicationWillEnterForeground处放置一个断点。

答案 2 :(得分:0)

您不能在真实设备上调试它。连接调试器后,您的应用将永远不会在真实设备中进入后台模式。

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

我已经阅读了几个具有FBApplicationProcess的StackOverflow问题。通常,这是由于应用启动时缺少数组或某些东西而引起的。

最诚挚的问候。

答案 3 :(得分:0)

我已经经历了以上所有答案,并且都给出了正确的答案。不过,我想分享我的观点。

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

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

  3. 如果您的应用启用了任何后台功能,那么即使在后台,您的应用也可以运行,但是在此期间您无法进行任何UI更改。

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

  5. 为我提供有关您问题的更多信息。

谢谢。

答案 4 :(得分:0)

崩溃日志在测试设备上仍然可用。

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

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