【问题标题】:App crashes with "Watchdog has expired." message. No stack trace or crash dump应用程序崩溃并显示“看门狗已过期”。信息。没有堆栈跟踪或崩溃转储
【发布时间】:2011-04-25 01:08:09
【问题描述】:

我的应用程序在 Xcode 调试器中崩溃并显示以下消息:

Watchdog has expired.  Remote device was disconnected?  Debugging session terminated.

The Debugger has exited due to signal 15 (SIGTERM).The Debugger has exited due to signal 15 (SIGTERM).

崩溃非常严重,大部分时间都会重新启动设备。调试器刚刚退出,之后我没有收到任何崩溃日志。

是“看门狗已过期”。消息相关吗?或者这只是调试器在崩溃时与应用失去联系的产物?

如果相关,是什么意思?

【问题讨论】:

  • 我应该补充一点,我怀疑我的 drawLayer 实现花费了太长时间来渲染每个图块并且被系统杀死。不过这是一个猜测。我无法在任何地方找到任何信息来支持这个想法。
  • 是的,如果应用程序长时间没有响应,看门狗会杀死应用程序。
  • 据我所知,虽然看起来只有当应用程序无响应 20 秒时才会发生这种情况。那幅画所花费的时间远不及这一点。此外,绘图是在后台线程上进行的,并且 UI 保持相当灵敏。

标签: iphone xcode debugging


【解决方案1】:

“看门狗已过期。”可能意味着任何东西。消息的措辞方式表明“本地”GDB(在您的 Mac 上运行)GDB 超时等待来自“远程”GDB(在手机上运行)的数据。或者,“看门狗已过期”可能来自手机在重启前不久的控制台输出。

如果您在应用运行时断开设备连接会显示什么?如果你把它关掉怎么办?如果您发出硬重置(Sleep+Home 10 秒)怎么办?

如果它导致设备重新启动,则说明发生了严重错误。您的应用不应该能够关闭手机,但有时会出现问题(IIRC、2.x 的某些版本上的 UIImagePickerController 存在问题,即您的应用会被杀死或手机会重启,取决于哪个先启动)。 “大量位图”听起来可能会导致 CoreAnimation(或 IOSurface 或其他)耗尽视频内存。

除非你对线程安全非常小心,否则我会犹豫在后台线程中进行绘图(大致来说,CoreAnimation 是,UIKit 不是,除了一些在 4.0 中被设为“线程安全”的函数)。

【讨论】:

  • "如果您在应用程序运行时断开设备连接会显示什么?" ...是的,这是一个非常简单的实验:) ...只需拔下设备就会产生相同的消息。 “看门狗已过期”消息无关紧要,它只是应用程序崩溃时调试器吐出的消息。
猜你喜欢
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2011-07-27
  • 1970-01-01
  • 2020-12-07
相关资源
最近更新 更多