【问题标题】:iPhone - Crash on a secondary thread doesn't affect main threadiPhone - 辅助线程崩溃不会影响主线程
【发布时间】:2011-05-19 12:49:51
【问题描述】:

我注意到,当我的应用在主线程上崩溃时,在设备上运行时,程序会停止,并且我会在 XCode 上获得调用堆栈,这样我就可以准确地看到崩溃发生的位置/原因。

但是,当崩溃发生在辅助线程上时,主线程 (gui) 继续正常运行,我只在控制台上收到有关崩溃的消息,而没有整个调用堆栈。

为了验证它,我调用了一个不存在的方法,一次在主线程上,一次在辅助线程上,实际上当辅助线程崩溃时,我只在控制台中看到一条关于“无法识别的选择器”的消息。

有没有办法让辅助线程使应用程序崩溃并同时显示完整的堆栈?这对于调试目的非常有用。

谢谢

【问题讨论】:

    标签: iphone objective-c multithreading xcode ios4


    【解决方案1】:

    原来我没有看到崩溃的原因是我有 try&catch 语句...要小心它们。

    【讨论】:

      【解决方案2】:

      您应该在第二个线程的代码周围放置一个 try...catch,然后将完整的异常描述转储到 catch 中。

      尽管对此不熟悉 iPhone 的内部结构,但请记住,主线程只是一个运行各种方法的循环。对于系统在主循环上执行的任何代码,它最有可能在 try...catch 中执行该代码,以便它可以记录问题,并可能优雅地退出应用程序。

      【讨论】:

      • 我希望后台线程崩溃也会导致所有其他线程崩溃,或者至少停止正在运行的应用程序并在 XCode 中让我知道它,以便我可以调试它。
      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      相关资源
      最近更新 更多