sigabrt没有错误信息

我有一个奇怪的问题,我在主循环中得到一个Sigabrt,但没有显示错误消息,我在网上看了很多,但没有find任何有用的东西。 所以我的问题是,如何跟踪是什么导致sigabrt没有错误信息?

提前致谢。

当你的程序崩溃时,你可以进入debugging器控制台并inputbt (backtrace),这会让你知道在崩溃时执行了什么代码。 顶级项目可能不是你的代码,但如果你继续向下移动,你最终应该看到你的东西。

如果你的代码中没有任何调用,那么这些SIGABRT错误通常与你的xib文件相关,在你的代码中没有反映出来的xib文件中将会丢失或者重命名或者改变。

你看过日志吗?

你有没有试过在debugging器中运行? 它应该停止,并给你一个堆栈跟踪时。 还可以尝试在所有例外情况下设置一个断点。

对于SIGABRT错误,运行debugging,直到程序崩溃。 然后,应该在你的代码编辑器上面有一个小小的黑色button,文字“GDB”在黄色上方,在你的小型debugging栏中。 点击它,它会调出你的debugging器控制台。 这应该显示sig-abort报告,可能是一个警告,声明它是由一个未处理的抛出的exception,所有嵌套的函数调用的堆栈跟踪,以及一个或多个消息处理具体出错的消息引起的。

我不知道实际的启动错误是怎么回事,但是很可能你改变了你的代码中被你的xib文件引用的一些类的名字,并且没有改变Interface Builder中的引用。

只有当应用程序正在调用资源缺less的东西时才会出现此错误。

例如我有一个(IBAction)播放声音,但声音不再是应用程序的一部分。

检查你的代码中的所有被调用的资源,并确保它们仍然在你的xcode项目中。 即使在“界面”构build器中使用的图像也可以生成SIGARBT。

这是一个令人讨厌的错误,因为9/10次debugging器不会告诉你什么是错的。

太长时间了,我以为控制台给了我XCode 8没有任何信息,但后来我意识到我已经隐藏了控制台,需要再次显示。

在这里输入图像说明

对于像我这样被困在一个奇怪的大脑变形中的人来说:

  1. 按下该button,看看XCode告诉你什么坏了,修复它

  2. 再次享受生活!

在我的情况下,我没有正确处理asynchronous调用和multithreading,我没有任何消息得到SIGABRT崩溃。

在这种情况下真的很难debugging,但是一般的提示是使用callback来处理你的一系列操作。 不要同时做太多的动作,即使它们互不相关。