代码之家  ›  专栏  ›  技术社区  ›  Vlad Grigorov

8badf00d是什么意思?

  •  35
  • Vlad Grigorov  · 技术社区  · 17 年前

    有时我的iPhone应用程序会崩溃,出现一个奇怪的崩溃日志,读取的异常代码是0x8badf00d。stacktraces显示应用程序执行的随机快照,但没有可疑之处。这种情况很少发生,我无法找到如何复制它。有人知道更多关于这种异常和异常代码的信息吗?

    以下是我的日记摘录:


    异常代码:0x8badf00d


    无法停用




    ...

    7 回复  |  直到 17 年前
        1
  •  97
  •   Alexander    13 年前
        2
  •  14
  •   Jayprakash Dubey    10 年前

    如果你得到 Exception Type: 00000020 Exception Codes: 0x8badf00d 那就是 . 异常代码 0x8badf00d "ate bad food" .

    最常见的 reason for this crash is synchronous activity on main thread. 解决办法是 switch to asynchronous activity 在主线程上。

    Screenshot for Apple document

    Refer this Apple document for more detail.

        3
  •  8
  •   SQLMenace    17 年前

    这是HexSpeak,请参见此处: http://en.wikipedia.org/wiki/Hexspeak

        4
  •  3
  •   Joel Coehoorn    17 年前

    这是一些程序员开的玩笑。您必须为代码选择一个数字,但数字本身并不一定意味着什么。 8badf00d 是写入数字2343432205的另一种方式,之所以选择它,是因为它在异常日志中以十六进制表示时看起来很“有趣”。

        5
  •  3
  •   VivekRajendran    7 年前

    0x8badf00d exception 由苹果提供的看门狗抚养。网络应用程序中看门狗超时崩溃的最常见原因是主线程上的同步联网。这里有四个促成因素:

    长时间超时如果网络刚刚离开(例如,用户在进入隧道的火车上),任何挂起的网络请求都不会失败,直到某个超时过期。大多数网络超时是以分钟为单位测量的,这意味着主线程上被阻止的同步网络请求可以使用户界面一次无响应数分钟。

    试图通过减少网络超时来避免这个问题不是一个好主意。在某些情况下,网络请求可能需要几秒钟才能成功,如果您总是提前超时,那么您将永远不会取得任何进展。

    有两种常见的解决方案:

    在次线程上同步联网如果异步运行联网代码非常困难(可能您使用的是假定同步联网的大型可移植代码库),则可以通过在次线程上运行同步代码来避免监视程序。

    docs 了解更多信息。

        6
  •  2
  •   Paul Sonier    17 年前

        7
  •  -6
  •   iquanyin    12 年前

    推荐文章