Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
Java Eclipse在调试时跳过行_Java_Android_Eclipse_Debugging - Fatal编程技术网

Java Eclipse在调试时跳过行

Java Eclipse在调试时跳过行,java,android,eclipse,debugging,Java,Android,Eclipse,Debugging,我对java和eclipse都是新手,我一直在尝试在设备上调试android应用程序。这是一个带有jar文件引用的小项目。我读过类似的问题,但没有帮助 我需要的是能够调试jar文件的源代码,所以我附加了源代码(我使用反编译器获得的),并且我能够进入库的源代码,所以我认为我这样做是正确的。但我无法成功地调试到这些源代码中;在调试模式下,它跳过断点(只有附加到jar文件的源文件中的断点),当我尝试“单步执行代码”时,它转到随机行,在调试时跳过行 我正在使用最新版本的eclipse、android s

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

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

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


提前谢谢,我希望我解释得足够充分。

试着通过按F6来逐行调试代码。

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

这是一个熵过程,所以反编译(编译(源代码))不会输出源代码(您丢失了信息),比如行号。这就是您需要原始源代码的原因。如果你没有它,你将不得不利用你的内在才能遵循代码:)

编辑:显然,一些反编译工具可以为您这样做,正如bobbel所说。
请参阅。

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

Its显示源文件和Jar不一样。请尝试获取正确版本的源代码。

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

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

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

编辑:根据Laurent B的建议,您将能够使用JD Eclipse重新对齐代码,请参见:

+1评论!:)

edit2:如果使用以下标志编译类文件,则无法使用行号进行反编译:

-g:none
不要生成任何调试信息


如果是这样的话:试着找到jar文件的原始源代码

我试过了,jar源文件中的断点从未被命中,所以我最终调试了上层——我需要调试jar文件——这是不够的。我担心这一点。我不知道我是否能找到原始资料。非常感谢。谢谢,我会试试的。但我担心这不太可能发生。如果我有原件的话,我会用原件的!:)但是谢谢你的解释。+1对于添加行号作为评论,我今天学到了一些好东西。再次感谢劳伦特B,这真的很有帮助。