查找此异常原因的下一步是啥?

Posted

技术标签:

【中文标题】查找此异常原因的下一步是啥?【英文标题】:What are my next steps on finding the cause of this exception?查找此异常原因的下一步是什么? 【发布时间】:2015-08-31 08:18:54 【问题描述】:

我对 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]  

【问题讨论】:

“我正在寻找帮助解决此问题的后续步骤。我可以做些什么?” -- 首先,阻止您的 IDE 因异常而中断。或者,继续越过断点,以便在 LogCat 中获得真正的堆栈跟踪。 堆栈跟踪中包含您控制的代码的最后一行(朝向顶部)是什么?这通常是最好的起点,并了解您将哪些对象传递给 3rd 方方法。 git diffftw 您使用的是版本控制系统吗?您可以比较版本以了解进行了哪些更改以及在何处进行了更改。 我正在使用版本控制系统。有许多文件被更改,包括项目布局。我比较了两个我认为可能导致问题的文件,因此我使用了构建中有效的文件版本,但仍然出现异常。 【参考方案1】:

当应用程序在 Android 设备上运行时,我单步执行代码,但异常发生在不属于应用程序的代码中

正如您所做的那样,在调试器中逐行遍历您的应用程序代码,直到您到达在抛出异常之前运行的最后一行。

在这一行中,您会找到对某个外部库的调用。你说过你没有这个库的源代码。这很不幸,但这不是路的尽头。

最简单的后续步骤来自意识到您的异常很可能是由以下两种情况之一引起的:

1) 您使用外部库的方式并非设计用于使用。例如,向其提供一些不良数据,不按顺序使用其功能,或者以错误的方式使用。阅读文档并尝试了解这是否是问题所在。如果没有文档,好吧.. 欢迎来到地狱。

2) 您对外部库的调用遵守其约定并且是正确的。如果是这种情况,则库本身可能存在错误。根据库的不同,请查阅文档或任何在线社区网站,以验证该特定错误是否已知、是否有解决方法或您是否遇到问题。

找出这两件事中的哪一个,然后决定如何继续前进。它可能正在更改您的代码,可能正在更改您使用的库,可能是两者的某种组合。没有更多细节是不可能说的。祝你好运!

【讨论】:

以上是关于查找此异常原因的下一步是啥?的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 中 RKManagedObject 的下一步是啥

c# windows form,部署前的下一步是啥?

从 appengine 迁移到完整 django 的下一步是啥?

使用 cx_Freeze 的下一步是啥?

下一步是啥();在这段代码中?

Tigase:MUG 没有实现,下一步是啥?