我在main.m中有一个错误“线程1:信号SIGABRT”我该如何解决这个问题?

时间:2012-03-20 07:08:41

标签: iphone ipad signals sigabrt

我在main.m文件中的代码如下。从我开始编写这个应用程序时起,我根本没有改变它。

#import <UIKit/UIKit.h>

#import "rickAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([rickAppDelegate class]));
    }

}

我在'return UIApplicationMain'行上收到SIGABRT错误。 我的程序是一个显示红色按钮的应用程序,当您按下它时,它会播放视频。使用本教程实现iAd后出现此错误: http://www.ioslearner.com/implement-iads-tutorial-iphone-ipad-sdk/

它起初工作,但后来我开始收到SIGABRT错误。我做了很多搜索,无法弄清楚如何解决这个问题,在所有的网站中,有人问这个,然后自己弄清楚或通过一个我无法理解的非常模糊的答案。请帮忙!如果您回答,请具体说明我必须做什么。如果需要,我可以发布我的整个代码。 提前谢谢!

3 个答案:

答案 0 :(得分:16)

当您在SIGABRT的那一行上获得main时,表示您的程序引发了异常。堆栈跟踪显示异常被捕获的位置,而不是被提升的位置。通常这没有帮助。

要调试问题,您可以做两件事:

  1. 单击调试器控制栏中的“继续执行程序”按钮,或选择程序&gt;调试&gt;从菜单栏继续。这将使程序继续进行例外处理。它会向调试器控制台打印一条消息,帮助您了解错误。 (在实际打印消息之前,您可能需要继续执行几次。)仔细阅读消息!它们通常包含有用的信息。

  2. Set an exception breakpoint.这将使Xcode在引发异常的位置停止您的程序,这样您就可以看到导致问题的代码和堆栈跟踪

答案 1 :(得分:3)

SIGABRT(信号中止)表示应用程序崩溃是由于未能访问nil或不存在的内容,通常根据我的经验,它已经破坏了Outlets。

  1. 在故事板中,检查每个视图控制器中的所有Outlets。
  2. enter image description here

    1. 确保删除带黄色警告的连接。这些都是无效的出口。
    2. enter image description here

      1. 如果名称正确,请在Identity Inspector中检查您的故事板ID。

      2. 检查代码左侧是否有任何断点。 enter image description here

      3. 希望这有助于某人!

答案 2 :(得分:0)

您应该在UIVIewController的文件中调试您的应用程序(该应用程序所在的屏幕或视图)。 通常在以下情况下会出现此错误:

1)您的xib不适合您的商店。例如通常的UIView和UITableView控件而不是UITableViewController。

2)在你的程序中你想要使用一个不存在的对象。例如:如果数组元素3的数量,但你想获得第4个元素。