Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EclipseAndroid调试器-我在代码中的什么地方导致了异常?_Android_Eclipse_Debugging - Fatal编程技术网

EclipseAndroid调试器-我在代码中的什么地方导致了异常?

EclipseAndroid调试器-我在代码中的什么地方导致了异常?,android,eclipse,debugging,Android,Eclipse,Debugging,诚然,我的问题与这个基本相同,但似乎没有得到回答: 上周下载了EclipseHelios、Android开发工具插件和JDK。我在我的设备上乱搞一个应用程序,在调试模式下运行,结果它意外地终止了。我意识到我造成了一个NullPointerException,而这个问题本身在很长时间内都不是问题 然而,问题是调试器似乎无法识别异常在我的代码中引发的位置。堆栈跟踪没有引用我的代码 事实上,如果我在OnCreate()方法中添加以下内容,就会遇到同样的问题 public void onCreate(

诚然,我的问题与这个基本相同,但似乎没有得到回答:

上周下载了EclipseHelios、Android开发工具插件和JDK。我在我的设备上乱搞一个应用程序,在调试模式下运行,结果它意外地终止了。我意识到我造成了一个NullPointerException,而这个问题本身在很长时间内都不是问题

然而,问题是调试器似乎无法识别异常在我的代码中引发的位置。堆栈跟踪没有引用我的代码

事实上,如果我在
OnCreate()
方法中添加以下内容,就会遇到同样的问题

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //lI("onCreate()");  //A silly logging thing I messed around with

    Integer iDareYou = null;
    iDareYou.byteValue();
值得赞扬的是,Eclipse当然警告我,代码可能会在我面前爆炸。但当我在我的设备上实际运行时,返回的堆栈跟踪如下所示:

Thread [<1> main] (Suspended (exception RuntimeException))  
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2787  
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2803   
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 135 
ActivityThread$H.handleMessage(Message) line: 2136  
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 144 
ActivityThread.main(String[]) line: 4937    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 521  
ZygoteInit$MethodAndArgsCaller.run() line: 868  
ZygoteInit.main(String[]) line: 626 
NativeStart.main(String[]) line: not available [native method]  
Thread[main](挂起(异常运行时异常))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord,Intent)行:2787
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord,Intent)行:2803
ActivityThread.access$2300(ActivityThread,ActivityThread$ActivityRecord,Intent)行:135
ActivityThread$H.handleMessage(消息)行:2136
ActivityThread$H(处理程序)。dispatchMessage(消息)行:99
Looper.loop()行:144
ActivityThread.main(字符串[])行:4937
invokenactive(Object,Object[],Class,Class[],Class,int,boolean)行:不可用[本机方法]
调用(对象,对象…)行:521
ZygoteInit$MethodAndArgsCaller.run()行:868
颧骨单位。主(字符串[])行:626
NativeStart.main(字符串[])行:不可用[本机方法]
我四处寻找一些答案,不幸的是,我能想到的只是“为什么我的Android应用程序会导致NullPointerException”的问题?多样性

我希望找出我应该采取的不同做法,以便能够在我的代码中找到导致异常的地方。。。。因为我相信这种能力在将来的某个时候会派上用场


要编辑此以添加一些信息。正如下面的第一条注释所提到的,调试器挂起线程的状态不是应用程序的“最终”状态。按几次“resume”将进程移动到进程实际终止的位置,但不幸的是,Eclipse/ADT调试窗口中没有显示有用的堆栈跟踪。然而,在这一点上,我在上面粘贴的堆栈跟踪以及我代码中NPE堆栈跟踪的前3个唯一行被输出到LogCat。我之前曾查看过LogCat是否有我可以使用的东西,但很可能是在我按下调试器中的“resume”将进程移动到此状态之前。但不幸的是,这样做永远不会在实际的调试器中在我的代码中显示NPE的堆栈跟踪

但是消息并不全是坏消息——从右边“变量”窗口中的信息中,我可以看到线程的当前作用域中有一个NPE,因此这至少可以给我一个NPE正在进行的线索(当然还有LogCat)

因此,根据另一个主题中的建议,我发现最好的解决方法是为NullPointerException添加一个“捕获和未捕获”断点。当我执行此操作并重新启动时,调试器会在代码中显示NPE的堆栈跟踪,并将编辑窗口直接移动到导致NPE的行

目前,我认为这是因为NPE被Android框架捕获(并可能再次抛出)最初的困境似乎是由于Eclipse/ADT/DalvikVM调试堆栈跟踪窗口不包括LogCat中出现的堆栈跟踪“稍后”中显示的“原因”信息(据我所知)。我将进一步调查这是否可以补救:)

我很欣赏Bert F的建议,因为我没有完全意识到线程还没有处于“最终”状态。虽然堆栈跟踪确实[稍后]显示在LogCat中,但我没有在LogCat中“遗漏”它,因为它[尚未]在那里,我遗漏的是点击“恢复”,这会导致堆栈跟踪在LogCat中输出


尽管我最初使用断点让调试器停在代码中的行上,但事实上,在恢复线程后,我最终可以在LogCat中获得堆栈跟踪,这将有效地解决问题。我唯一能真正要求的另一件事是让调试器停在我代码中导致异常的那一行,而不是被捕获,然后由Android框架重新抛出。但我相信这将是一个不同的问题:)Eclipse虽然很有用,但如果我单击LogCat窗口中显示的堆栈跟踪中的相应行,它会将我发送到那里。

我运行了您的精确代码,LogCat给了我以下例外情况:

Caused by: java.lang.NullPointerException
    at mypackage.test.TestActivity.onCreate(TestActivity.java:23)
当然是最重要的

idareyu.byteValue()

声明。这是晴朗的一天

我建议您必须学会如何正确使用。

你发布的日志看起来很没用,你有没有弄坏了一些LogCat过滤器(我曾经遇到过这种情况)

OFFTOPIC:“在我的代码中,哪里导致了异常?”-我认为您的问题没有很好地表述


我认为这个问题的恰当名称可能是-'如何使用Android调试器和LogCat?有些异常没有正确记录

在Eclipse中,Android SDK提供了几个视图。在其上称为“LogCat”
。在那里可以找到异常堆栈跟踪

idareyu.byteValue()

如果您想转换,在空值上调用此函数会导致问题,我建议您尝试一下