2014-06-22 122 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視頻,因爲它聽起來像你沒有太多的調試經驗。開始的視頻有很多有用的信息。