簡體   English   中英

sigabrt沒有錯誤消息

[英]sigabrt with no error message

我有一個奇怪的問題,我在主循環中得到一個Sigabrt,但沒有顯示錯誤信息,我在互聯網上看了很多,但沒有找到任何有用的東西。 所以我的問題是,如何跟蹤導致sigabrt沒有錯誤消息的原因?

提前致謝。

當您的程序崩潰時,您可以轉到調試器控制台並鍵入bt (backtrace),這將使您了解崩潰時正在執行的代碼。 頂級項目可能不是您的代碼,但如果您繼續向下移動,您最終應該會在那里看到您的某些內容。

如果您的代碼中沒有任何調用,那么這些SIGABRT錯誤通常與您的xib文件有關,在xib文件中將丟失或重命名或以其他方式更改,但這些錯誤未在您的代碼中反映出來。

太久了,我以為控制台沒有給我XCode 8的信息,但后來我意識到我剛剛隱藏了控制台並需要再次顯示它。

在此輸入圖像描述

對於像我一樣陷入奇怪的大腦扭曲的其他人:

  1. 按下該按鈕,看看XCode告訴你什么壞了,修復它

  2. 再次享受生活!

你看過日志了嗎?

你試過在調試器中運行嗎? 它應該停止並給它一個堆棧跟蹤。 還嘗試在所有異常上設置斷點。

對於SIGABRT錯誤,請在調試中運行,直到程序崩潰。 然后,在迷你調試欄中的代碼編輯器上方應該有一個帶有黃色文本“GDB”的小黑色按鈕。 單擊它,它將調出您的調試器控制台。 這應該顯示sig-abort報告,可能是一個警告,指出它是由未處理的拋出異常引起的,所有嵌套函數調用的堆棧跟蹤,以及上面的一個或多個消息處理特定錯誤。

我不知道實際的啟動錯誤有什么問題,但很可能你改變了你的xib文件引用的代碼中某個類的名稱,並且沒有更改Interface Builder中的引用。

只有在應用程序調用資源中缺少的內容時才會出現此錯誤。

例如,我有一個(IBAction)播放聲音,但聲音不再是應用程序的一部分。

檢查代碼中的所有被調用資源,確保它們仍在您的xcode項目中。 即使在“界面”構建器中使用的圖像也可以生成SIGARBT。

這是一個惱人的錯誤,因為調試器的9/10倍並沒有告訴你什么是錯的。

在我的情況下,我沒有正確處理異步調用和多線程,並且沒有任何消息我遇到SIGABRT崩潰。

在這種情況下調試真的很難,但一般的提示是使用回調來處理你的一系列動作。 即使它們彼此無關,也不要同時運行太多動作。

在我的情況下,問題是觀察者在視圖被解雇后沒有被刪除。 特別是Google地圖中@“myLocation”的觀察者。

所以我在viewDidLoad上有這個:

[self.mapView addObserver:self
               forKeyPath:@"myLocation"
                  options:NSKeyValueObservingOptionNew
                  context:NULL];

但是我從來沒有刪除它,在解雇地圖視圖時我會經常崩潰我的應用程序。

我補充說:

-(void)dealloc{
    [self.mapView removeObserver:self forKeyPath:@"myLocation"];
}

問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM