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

问题描述:

我在main.m文件中的代码如下。当我开始编写这个应用程序时,我根本没有改变它。我在main.m中有一个错误“线程1:信号SIGABRT”我该如何解决这个问题?

#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错误。 我的程序是一个显示红色按钮的应用程序,当您按下它时,它会播放视频。我在使用本教程实施iAds后出现此错误: http://www.ioslearner.com/implement-iads-tutorial-iphone-ipad-sdk/

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

+1

在设备中的调试模式下运行,并检查是否有任何异常 – Tornado 2012-03-20 07:18:15

+0

上传截图,它在代码中激发异常,这将有助于人们了解它崩溃的原因以及为什么! – Kuldeep 2012-03-20 07:31:29

+0

该教程代码是否工作不变,或者它是否也提供了SIGABRT?如果我记得iAd的填充率很低(有时没有广告),那么AdWhirl就是门票。无论您选择何种方式,您都可以查看代码,以根据Apple/Google最新的实施文档展示广告。事情变了,教程可能有旧的代码。 – 2012-03-20 07:33:37

当您在main的该行上得到SIGABRT时,这意味着您的程序引发了异常。堆栈跟踪显示出例外情况是被捕获,而不是它在被提出。通常这没有帮助。

要调试的问题,你可以做两件事情:

  1. 点击“继续执行程序”按钮,在调试器的控制杆,或选择程序>调试>从菜单栏中继续。这将让程序继续进行异常提升过程。它将打印一条消息到调试器控制台,这将帮助你了解什么是错误的。 (在实际打印消息之前,您可能需要继续执行几次)仔细阅读消息!他们通常包含有用的信息。

  2. Set an exception breakpoint.这将使在Xcode的在异常正在提出点停止你的程序,所以你可以看到代码,并导致该问题的堆栈跟踪。

+0

感谢您的支持。现在,我必须让我的应用程序崩溃,以便我可以试用。建议? :) – 2012-03-20 07:35:35

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

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

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

+0

当您尝试使用不存在的对象时,您将获得EXC_BAD_ACCESS,而不是SIGABRT。对? – 2012-03-20 07:38:27

+0

我纠正了我的答案。我希望你现在清楚 – Gargo 2012-03-20 08:33:51

+0

我有一个问题,我正在用xibs去,但项目被配置为使用(非远程)故事板,从Info.plist中删除故事板为我解决了它 – 2017-11-30 22:08:49