XCode错误:“GDB:程序收到信号:”SIGABRT“。”

时间:2010-12-22 18:26:31

标签: iphone objective-c cocos2d-iphone xcode3.2

我正在使用cocos2d 0.99.5编写一个简单的应用程序,iPhone SDK是4.2。我在设备上运行了我的应用程序,但是当我按下按钮切换CCScenes时,有时应用程序突然没有响应,XCode收到错误:“GDB:程序收到信号:”SIGABRT“。”

这个问题偶然发生。您必须多次按转换按钮才能重现此错误。

我了解到SIGABRT是由abort()函数引发的。当断言失败时,标准的assert()宏调用abort()。但是我的程序中没有断言功能。

有谁能告诉我这个问题是怎么发生的,以及如何解决这个问题?我现在不知道接下来该做什么。

2 个答案:

答案 0 :(得分:1)

问题已经解决了。见上面的评论。

答案 1 :(得分:0)

如果您在应用开始时获得SIGABRT,请检查您的XIBS

打开每个XIB

检查Identity Inspector中的每个文件所有者

确保提到的类是正确的,并且类存在(我已经重命名了一些文件而且失败了)

开始
MainWindow.xib
RootViewController.xib

检查Identity Inspector中的类名是否正常。

将断点放入 的AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//if it enters this method then MainWindow.xib ok

第2步 - 在didFinishLaunchingWithOptions中放置另一个断点

   self.window.rootViewController = self.viewController;

在RootViewController.m(或AppDelegate中VC self.viewController的任何子类)中放置一个断点

viewDidLoad

如果它崩溃了,请检查RootViewController.xib(或者第一个VC的类) 并检查文件所有者的类是否正确

遍历所有View控制器 查找initWithNibName以查找调用的XIB。 在每次检查中,XIb中的类名称设置正确。