2011-01-23 39 views
0

我正在使用Eclipse。Android:更具描述性的錯誤請!

我燒幾個小時試圖調試我的第一個(非常簡單)android應用程序。

當我遇到一個錯誤,我沒有得到一個適當的例外與描述出了什麼問題,我得到一個屏幕要求的源代碼和「暫停(異常RuntimeException))」在調試日誌。

我正在訴諸每一行記錄來查看最後一個執行點的位置,然後試圖通過使用google搜索來了解爲什麼以下行會導致錯誤。

查看我的屏幕截圖:ErrorMissing Source

突出顯示的行:

SimpleCursorAdapter scaSights = new SimpleCursorAdapter(this,R.layout.sight_row,sightsCursor,fromDisplayFields,toDataFields); 

是其中發生異常。我不知道那裏有什麼問題,但是一個好的異常消息會有所幫助,而不是源代碼的提示。

任何幫助非常感謝!

+2

Log說什麼? http://developer.android.com/guide/developing/debug-tasks。html將其視爲「logcat」 – DrColossos 2011-01-23 19:03:17

+0

Nothing usefull - 我有時通過閱讀logcat來獲取某些內容,但最近它似乎首先要求我在給logcat記錄錯誤之前先給它一個源代碼。 http://cde.co.za/shared/hein/logcat.jpg – 2011-01-23 19:29:54

+1

您作爲「錯誤」包含的視圖不是Logcat輸出。要麼讓它完全炸彈,然後切換到logcat來查看異常。 – 2011-01-23 19:44:52

回答

2

發生這種情況是因爲您正在追蹤的行上有一個異常,而您現在正在追蹤引發異常的SDK類。這是正常的和預期的,雖然不是非常有用。當發生這種情況時,除了「玩」調試器並查看logcat日誌以查看異常堆棧跟蹤之外,沒有太多可做的事情。

如果你想在調試器中看到異常,你可以在該塊周圍放一個try {...} catch(Throwable t),然後在catch中設置一個斷點並檢查異常,你的其他物體。

1

logcat通常會打印所有未捕獲的異常。檢查日誌的另一種方法是用try-catch包圍該代碼,然後打印錯誤消息和/或堆棧跟蹤。

1

嗯。從我在wtf.jpg圖片中可以看到的情況來看,第86行似乎不是堆棧跟蹤的一部分,所以我不知道它是否會導致問題。

的一些注意事項,以幫助調試:

  • 可以引入破發點(在71行說),如果你想一步通過執行代碼(按步驟Over圖標)
  • 步驟 您編寫和調用的函數,按 Step Into圖標
  • 如果嘗試瀏覽其中一個android函數(您沒有編寫),您將看到Source not Found錯誤。這並不意味着這裏發生的錯誤
  • 你可以嘗試設置2個斷點(比如在第71和90行),當你點擊第一個斷點時,按下恢復圖標 - 它將繼續運行,直到它到達第二個斷點。如果它沒有崩潰,那麼你可以確定這裏沒有發生錯誤。
  • 只需按紅色(E)按鈕,即可將logcat過濾爲錯誤消息。按(V)按鈕返回。