当我运行我的应用程序时,一段时间后它停止工作并说出主题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);
答案 0 :(得分:3)
SIGABRT表示触发了异常。控制台日志将打印确切的异常消息,您需要查看它(在此处发布)。
问题可能出在您的UIApplicationMain方法
中答案 1 :(得分:0)
要在user3109992上展开回答,SIGABRT通常表示抛出了异常。通常,您希望启用全局异常断点,以便在生成异常的代码行上停止您的程序,而不是仅仅在main上崩溃,以便您可以获得有关发生的事情的一些有意义的信息。
要设置全局断点,请使用左侧栏(或命令7)上的断点导航器(看起来像菱形)。在左下角单击+图标,然后选择“异常断点”。现在,您的程序将在抛出异常时崩溃。但是,这仍然不会将实际的异常打印到控制台。
要在发生崩溃时将异常打印到控制台,请选择类似“objc exception throw”之类的堆栈框架,它将位于左侧窗口的顶部。如果您在模拟器上运行类型:po $ eax,一般情况下异常将打印到控制台。请注意,如果您在设备或64位模拟器上,有时异常所在的寄存器是不同的,因此您可以键入:“register read”,它将为您提供寄存器列表。顶部的那个保存异常,因此您可以键入:“po”来查看它。当您的程序在主程序崩溃时,您可以通过在方案(产品 - &gt;方案 - &gt;编辑方案)中设置“日志例外”来自动打印例外,通过选择编辑方案窗口中的诊断选项卡进行访问。但是,如果设置了断点,那么断点将在调试器获得机会之前停止程序。我更喜欢断点方法,因为我通常想要了解更多关于应用程序崩溃时发生的事情。
我建议你回过头看看过去几代WWDC的一些调试和LLDB视频,因为听起来你没有很多调试器的经验。最初的视频有很多有用的信息。