Eclipse在调试时跳过行

时间:2014-02-12 14:32:28

标签: java android eclipse debugging

我是java和eclipse的新手,我一直在尝试在设备上调试Android应用程序。这是一个带有jar文件引用的小项目。我读过类似的问题,但没有帮助。

我需要的是能够调试jar文件的源代码,所以我附上了源代码(我使用反编译器获得),我能够进入库的源代码,所以我想我做了这是正确的。但我无法成功调试这些源代码;在调试模式下,它会跳过断点(只有源文件中附加到jar文件中的断点),当我尝试“进入代码”时,它会转到随机行,在调试时跳过行。

我正在使用最新版本的eclipse,android sdk和jdk。我不知道是什么导致了这个问题,我想知道。

在此先感谢,我希望我能够充分解释。

5 个答案:

答案 0 :(得分:7)

问题是,您无法反编译类文件以进行调试。因为反编译文件的行与原始Java源代码行不同(想象一下:真正的源代码有一些注释和其他不会编译成类文件的东西)!

因此,如果Eclipse向您显示当前的调试行42,那么它只会告诉您,调试器将在类文件中显示42th行代码。这与您反编译的java源文件不匹配。

但是,您可以使用添加行号作为注释选项反编译类文件。注释中的这些行号可以与实际的堆栈跟踪行号进行比较。这可以帮助你想象一下这个问题。

建议

编辑 Laurent B ,您可以使用 JD-Eclipse 重新调整代码,请参阅:{{3} }

+1评论! :)

edit2:如果使用标记http://mchr3k.github.io/jdeclipse-realign/编译类文件,您将无法使用行号进行反编译:

  

<强> -g:无
      不要生成任何调试信息。

所以如果是这种情况:尝试找到jar文件的原始源代码!

答案 1 :(得分:1)

反编译器不会获得确切的源代码,但会尝试从生成的字节码中重新创建它。

这是一个熵过程,所以Decompile(Compile(Source))不会输出Source(你松散的信息),比如行号。这就是为什么你需要原始的源代码。如果你没有它,你将不得不使用你的想象力来遵守代码:)

编辑:显然一些反编译工具可以为你做这件事,如bobbel所述。 见jdeclipse plugin

答案 2 :(得分:0)

F6

逐行尝试调试代码

答案 3 :(得分:0)

反编译的源代码有时就像那样。不幸的是,唯一的解决方案是停止调试jar并在Web上搜索源代码并将其添加到项目中。

答案 4 :(得分:0)

它表明源文件和Jar不一样。尝试获得正确的Source版本。