2015-09-28 57 views
2

我不知道我的設置發生了什麼變化,但它曾經是當我的(Swift)代碼崩潰時,調試器會顯示有問題的源代碼行。Xcode調試器不再顯示有問題的行,而是始終UIApplicationMain

現在不管出現什麼問題,調試器僅突出顯示定義了UIApplicationMain的AppDelegate.swift行。

我可以通過在打印語句中或多或少地在代碼中出現問題的地方來判斷問題出現,但是......如果調試器從不傳達任何信息並且我只需要做所有事情,那麼有什麼意義呢「老派「帶有打印語句 - 特別是如果有異步進程發生,其中打印語句不是必需的,是崩潰發生的可靠指示器?

我見過幾年前的主題,討論進入「首選項 - >行爲」,並修改代碼意外退出時顯示的內容。但是(a)我以前從來不需要這個,更重要的是(b)這似乎沒有效果,即調試器仍然只是放棄主體。

是否有一種很好的方法來恢復舊的,特定的調試行爲?

我目前正在運行Xcode 7.0,但是這種行爲發生在7-GM種子上,甚至現在當我回去嘗試7 beta 5和beta 6時,它曾經工作過。

回答

3

轉到Debug Navigator(cmd-7),單擊底部的加號按鈕並選擇Add Exception Breakpoint。這將在發生問題的實際線路處中斷。

在異常斷點細節編輯器中創建調試器命令操作並在文本框中輸入po $arg1。這將在調試控制檯中顯示錯誤消息。

+0

好的,謝謝,實際上我已經嘗試設置「所有異常」作爲斷點---使用斷點導航(cmd-7),順便說一句---這並沒有改變任何東西,除了「在同一行代碼(「UIApplicationMain」定義)中以綠色顯示「斷點1.2」條,否則會以「紅色」顯示「EXC_BAD_ACCESS」。添加「po $ arg1」將生成以下數字作爲控制檯中的輸出:「140614316631224」。用這個數字做什麼? – sh37211

+0

在我使用Xcode 7.1 b2的環境中(以及過去的較舊版本),它給出了我在答案中描述的結果。如果它仍然給你一個AppDelegate中的斷點和一個隱含的錯誤消息「140614316631224」,那麼你現在處理的特定錯誤的機會不在你的代碼中。 – MirekE

+1

感謝您的cmd-7提示,已修復。 – MirekE

0

以前的答案是正確的軌道上,但是今天這個答案是更相關:

上的Xcode 9.2與斯威夫特4,這樣做:

  1. 使用命令8調調試導航器。
  2. 單擊下方的+離開
  3. 選擇斯威夫特錯誤斷點

這就是它! :)