【问题标题】:(null) libc++abi.dylib: terminate called throwing an exception(null) libc++abi.dylib: 终止调用抛出异常
【发布时间】:2012-07-02 06:57:10
【问题描述】:

我使用 Xcode 4.5PR 和 iOS 6beta 2。

我没有更改任何代码,我的应用程序抛出了标题中提到的异常。

我使用调试窗口哪个函数导致了这个异常,但它显示

0x38dda960:  push   {r4, r5, r6, r7, lr}

我怎样才能找到问题?我该如何解决?

【问题讨论】:

  • 在所有异常上设置断点。
  • CodaFi,谢谢。我使用调试窗口在所有异常上添加断点。它停在上面提到的点。
  • 你不会碰巧调用了 -setOpaque 方法吧?
  • @CodaFi,感谢您的快速回复。我不使用 setOpaque 方法,也没有在 StoryBoard 中更改 opaque。这是我的堆栈跟踪。它停在第二行 'libobjc.A.dylib`objc_exception_throw:' '0x38dda960: push {r4, r5, r6, r7, lr}'
  • 不,堆栈跟踪就像导致崩溃的方法列表。喜欢this

标签: ios xcode ipad objective-c-2.0


【解决方案1】:

在 C++ 异常上设置断点以查找它被抛出的位置。

【讨论】:

  • 这是救生员!这样的断点让我发现了真正的问题。
【解决方案2】:

如果您没有进行任何更改,这可能只是与目前的 iOS 6 测试版有关。

但是,对于那些在谷歌上搜索此错误的人,这里有一些一般性建议:

1) 它可能是您选择构建相同代码的模拟器:

如果您没有更改任何源代码,请检查以确保您的方案仍指向上次使用的同一模拟器。 (例如,尝试呈现模态视图控制器 (presentModalViewController:),但忘记有条件地为 iPad 使用弹出框,可能会导致此问题。)

2) 如果堆栈跟踪和控制台没有帮助:

有时,堆栈中唯一的东西是mainUIApplicationMain,这使得很难追踪您自己的源中出了什么问题。这可能表明您正在调用或导致被调用的本机框架方法出现故障。

如果控制台中未列出任何方法或特定对象,并且堆栈跟踪未指向您自己的类中的任何方法,请尝试将执行范围缩小到尽可能接近引发异常的位置。在黑暗中选择断点时,我倾向于使用二分搜索方法,选择一个枢轴点并上下移动执行顺序,并根据需要选择一个新的“中途”点。

【讨论】:

  • 基思的回答是真实的。
【解决方案3】:

确保您使用的是 xcode 的开发者预览版 (4.5) 并且没有习惯性地打开发布版 (4.3.3) 并且肯定有匹配的 iOS 测试版 如果您尚未更新项目设置,则在将项目设置更新到 iOS 6 后,您将无法在 iOS 6 beta 上运行该应用程序,该应用程序将不再在 iOS 5.x.x 设备上运行。

【讨论】:

    【解决方案4】:

    当我在对象 i.s.o 上设置约束时,就会发生这种情况。将其分配给超级视图

    【讨论】:

      【解决方案5】:

      出现此错误的原因...

      在我的 .h 和 .m 文件中更改了一些 iboutlet 变量的名称后,我遇到了这个错误,但在这些变量的故事板链接中没有。重做链接后,一切都恢复正常了。希望这可以帮助你们中的一些人。

      【讨论】:

        【解决方案6】:

        如果您只是缺少一个库,有时可能会发生这种情况 - 我正在使用 MKMapView 制作一个快速示例应用程序,并且在我将 MapKit.framework 添加到我的项目之前出现了这个错误。

        【讨论】:

          【解决方案7】:

          当用户导入任何框架时有时会出现问题,因此还要将该框架导入应用程序资源文件夹中的 .pch 文件中。希望这可以帮助你们中的一些人。

          【讨论】:

            【解决方案8】:

            当我在“其他链接器标志”中设置 -ObjC 时,这发生在我身上并消失了

            【讨论】:

              【解决方案9】:

              发生此异常的原因有很多。找到确切根本原因的最佳方法是查看console。在那里你会发现这样的文字:

              *** lorem ipsum lorem ipsum lorem ipsum
              *** First throw call stack: (0x1d16012 0x16c3e7e 0xa4ef96 0x607704 0x6079a2 0x606876 0x617cb5 0x618beb 0x60a698 0x2b81df9 0x2b81ad0 0x1c8bbf5 0x1c8b962 0x1cbcbb6 0x1cbbf44 0x1cbbe1b 0x60617a 0x607ffc 0x1d1d 0x1c45) libc++abi.dylib: terminate called throwing an exception

              First throw call stack 之前的文本 lorem ipsum 将查明引发异常的确切问题。解决这个问题,你就可以开始了。

              【讨论】:

                【解决方案10】:

                当您从项目中手动删除情节提要并重新调整视图控制器的用途以在没有情节提要的情况下使用时,通常会出现此错误。确保您的视图控制器已添加到 AppDelegate 中窗口的根视图控制器中,并且视图控制器 init 没有 nib 名称(因为您在删除情节提要时会删除它) - 最重要的是从您的 pList 中删除行告诉应用程序应该存在故事板文件的文件,例如“主故事板文件基本名称 (iPad)”或“主故事板文件基本名称 (iPhone)”。一旦这些都消失了,您的应用将停止寻找故事板,您将像金毛猎犬一样变得金黄!

                【讨论】:

                  【解决方案11】:

                  我被这个卡住了很长一段时间,然后我发现我可以通过setting a breakpoint for all exceptions.获得异常的精确跟踪堆栈

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-09-08
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-12-14
                    • 2014-10-04
                    • 2017-05-25
                    相关资源
                    最近更新 更多