2015-06-15 26 views
0

我對Eclipse,Java和Android編程相當陌生。我已經接管了Android應用程序的開發。有些人在幾個月前做了一個更改,導致應用程序崩潰(異常),而不是應用程序代碼的一部分。我不知道項目的哪個部分或哪個部分發生了變化,導致崩潰。當應用程序在Android設備上運行時,我會遍歷代碼,但異常發生在不屬於應用程序並且沒有源代碼的代碼中。我的下一步找到這個例外的原因是什麼?

我正在尋找接下來的步驟來幫助解決此問題。我能做些什麼?

Thread [<1> main] (Suspended (exception UnsupportedOperationException)) 
<VM does not provide monitor information> 
Choreographer.doCallbacks(int, long) line: 616 
Choreographer.doFrame(long, int) line: 583 
Choreographer$FrameDisplayEventReceiver.run() line: 799 
Handler.handleCallback(Message) line: 733 
Choreographer$FrameHandler(Handler).dispatchMessage(Message) line: 95 
Looper.loop() line: 146 
ActivityThread.main(String[]) line: 5756  
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
Method.invoke(Object, Object...) line: 515 
ZygoteInit$MethodAndArgsCaller.run() line: 1291 
ZygoteInit.main(String[]) line: 1107  
NativeStart.main(String[]) line: not available [native method] 


Thread [<1> main] (Suspended (exception UnsupportedOperationException)) 
<VM does not provide monitor information> 
ZygoteInit$MethodAndArgsCaller.run() line: 1297 
ZygoteInit.main(String[]) line: 1107  
NativeStart.main(String[]) line: not available [native method] 
+0

「我正在尋找下一步來解決這個問題,我可以做些什麼? - 首先,停止IDE打破異常。或者,繼續經過斷點,以便在LogCat中獲得真實的堆棧跟蹤。 – CommonsWare

+1

堆棧跟蹤中的最後一行(朝上)包含您控制的代碼?這通常是開始的最佳地點,並瞭解你傳遞給第三方方法的對象。 – mnd

+0

['git diff'](http://git-scm.com/docs/git-diff)ftw – codeMagic

回答

0

我通過代碼的應用程序在Android設備上運行,但在代碼中不是應用程序

當你這樣做,通過步驟的一部分發生異常你的應用程序代碼在調試器中一行一行,直到你到達拋出異常之前運行的最後一行。

在這一行上,你會發現一個外部庫的調用。你說過你沒有這個圖書館的來源。這很不幸,但這不是路的盡頭。

最簡單的下一步來自意識到你的例外是最有可能由兩種情況之一引起的:

1)您使用的是外部庫在某種程度上,它並沒有設計爲使用。例如,給它提供一些不好的數據,不按順序使用它的功能,或者以錯誤的方式使用它。閱讀文檔並嘗試瞭解這是否是問題。如果沒有文件,那麼..歡迎來到地獄。

2)您致電外部圖書館的服務遵守其合同並且是正確的。如果是這樣,圖書館本身可能存在一個錯誤。根據庫的不同,請查閱文檔或任何在線社區站點,以驗證是否已知此特定錯誤,是否有解決方法,或者如果卡住了。

找出這兩件事中的哪一件,然後決定如何繼續前進。它可能會改變你的代碼,它可能會改變你使用的庫,它可能是兩者的結合。沒有更多的細節,這是不可能的。祝你好運!