2010-11-01 71 views
0

當我調試我的android應用程序時,我又碰到了一堵磚牆。爲什麼android調試器不能提供有用的信息?

當您的活動的啓動代碼有錯誤時,通常會顯示此問題。

在這種情況下,我的自定義SurfaceView類的構造函數後某處我得到帶有這種毫無價值的文字:

Thread [<3> main] (Suspended (exception RuntimeException)) 
    ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2596 
    ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2621 
    ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 126 
    ActivityThread$H.handleMessage(Message) line: 1932 
    ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 123 
    ActivityThread.main(String[]) line: 4603  
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
    Method.invoke(Object, Object...) line: 521 
    ZygoteInit$MethodAndArgsCaller.run() line: 860 
    ZygoteInit.main(String[]) line: 618 
    NativeStart.main(String[]) line: not available [native method] 

這當然沒有什麼與我的代碼。

我甚至試圖逐句通過我的代碼的每一行,但這種錯誤發生在方法調用之間的某處。

我確定這是一個簡單的錯誤,但事實上,調試器的行爲是一個主要的煩惱,我知道一個事實,我會擊中更多的這些錯誤。

謝謝。

編輯:

我發現了這個問題。一個簡單的空引用。但問題仍然存在,爲什麼調試器不能讓我看到這種nullpointerexception?

回答

1

我感覺到你的痛苦。我知道的唯一方法是讓程序繼續並強制關閉,然後在logcat窗格中讀取日誌。這似乎發生在所有通過本地層傳遞的事件中調用的代碼中,而據我所知,這只是一切。

我首先讓程序崩潰,然後讀取日誌以找出在哪裏放置斷點,然後重新啓動應用程序並檢查斷點處的值。這是非常令人沮喪的。

1

您正在查看調試器中的當前堆棧跟蹤,因此它顯示了程序執行的當前狀態。要查看與例外相關的錯誤和堆棧跟蹤,您需要查看日誌(在Eclipse中打開「logcat」視圖,或者在shell中使用adb logcat)。

1

調試器正在打破第一個未捕獲的異常,而不是原始異常。 logcat輸出具有完整的功能。

另請參閱this older answer

相關問題