2014-06-22 124 views
0

当我运行我的应用程序,一段时间后停止工作,并说线程1:信号SIGABRT。它说,在此代码:Xcode 5.1.1线程1:信号SIGABRT

#import <UIKit/UIKit.h> 

int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
} 

它说,它在这条线:

int retVal = UIApplicationMain(argc, argv, nil, nil); 

回答

3

SIGABRT表示异常被触发。控制台日志将打印确切的异常消息,并且您需要查看(在此处发布)。

这个问题可能是你的UIApplicationMain方法

0

扩大对user3109992回答SIGABRT通常意味着一个异常被抛出。通常,您希望启用全局异常断点,以便程序停止在产生异常的代码行上,而不是仅在主体上崩溃,以便您可以获取关于发生的事情的一些有意义的信息。

要设置全局断点,请在左侧栏(或命令7)上使用断点导航器(看起来像菱形)。在左下角单击+图标并选择“异常断点”。现在你的程序会在引发异常的时候崩溃。但是,这仍然不会将实际的异常打印到控制台。

要在发生崩溃时向控制台输出异常,请选择类似“objc异常抛出”的堆栈帧,它将位于左侧窗口的顶部。如果你在模拟器上运行,输入:po $ eax,并且通常情况下,异常将被打印到控制台。请注意,如果您在设备或64位模拟器上,那么有时候异常所在的寄存器会有所不同,因此您可以键入:“register read”,它将为您提供一个寄存器列表。顶部的人持有例外,因此您可以键入:“po”来查看它。通过在方案(产品 - >方案 - >编辑方案)中设置“记录例外”,您可以通过在编辑方案窗口中选择诊断选项卡来访问程序在主程序崩溃时自动打印例外打印。但是,如果你设置了一个断点,那么你的断点将在调试器有机会之前停止该程序。我更喜欢断点方法,因为我通常想要了解更多应用程序崩溃时发生的情况。

我建议你回去看看过去几个WWDC的一些调试和LLDB视频,因为它听起来像你没有太多的调试经验。开始的视频有很多有用的信息。