37

我想知道 Eclipse IDE 是否有任何解决方案来调试我没有源代码的 Java 代码,即调试动态反编译的代码、单步调试等?我尝试使用JD-EclipseJadClipse,如果我想查看一些类文件,这些插件效果很好,但是当我调试时,我得到“找不到源”。- 如何将这些插件“附加”到“提供”源?

我的环境:

  • 日食 3.5
  • Windows XP(但如果可能,我会寻找跨平台解决方案)

谢谢你。

4

8 回答 8

15

我也有同样的问题。今天,没有任何反编译器能够有效地调试已编译的 Java 代码。我正在研究 JD-Eclipse。在接下来的 3 到 6 个月内,JD-Eclipse 的布局应该会真正得到改善。我们将开始调试无源类并解决一些棘手的问题。

于 2009-12-22T19:21:28.330 回答
13

我对 Jadclipse 有很好的体验 - http://jadclipse.sourceforge.net/wiki/index.php/Main_Page - 在http://jadclipse.sf.net/update上有一个更新站点

为获得最佳结果,请使用 jad 并将其配置为将行号列为注释,这将启用代码在正确行上的输出。这最适合调试会话。

然后将其设置为类的默认视图。有关详细信息,请参阅文档。这对我很有效。

于 2009-12-15T09:47:21.293 回答
6

JD-Eclipse 主机插件的重新对齐片段。这个 Eclipse 插件使反编译的代码行号实际上适合 java-class 文件中的行号。因此,无需源代码即可进行调试。https://sourceforge.net/projects/realignmentjd/

于 2011-08-29T06:16:27.093 回答
3

这个插件应该会有所帮助。京东-Eclipse

在 Eclipse 中打开 Window -> Preferences -> General ->Editors -> File Associations 选择 *.class 文件类型 Associate it with JD-Eclipse 设置为默认

祝你好运

于 2009-12-15T09:28:32.893 回答
3

您可以使用 JD-GUI 反编译 jar 文件并将整个文件保存到源 zip 文件中,然后可以将其添加到源搜索列表中(通过配置构建路径)。

JD-GUI的问题是行号出来了,调试很困难,所以你需要

  1. 从反编译的源 zip 文件中提取源文件
  2. 运行在https://bushlife.com.au/groups/python/wiki/7539a/Adjust_line_numbers_in_file.html找到的脚本
  3. 压缩生成的源备份
  4. 将其添加为与您的 java 文件关联的源路径 - 在您的 java 项目中右键单击 jar 文件后使用配置构建路径。
于 2011-02-17T07:25:37.617 回答
2

反编译所有类,将所有 Java 文件排序在适当的层次结构中(包目录等),然后通过右键单击 jar 文件 -> Java 源附件 -> 外部文件夹将它们添加为原始 jar 的源。

您也可以将它们放在项目的文件夹中(在这种情况下单击 Workspace)

于 2009-12-15T08:35:01.010 回答
2

对我有用的解决方案是在应用补丁后使用 JD-Eclipse:http: //java.decompiler.free.fr/ ?q=node/464

这是 jd-eclipse 的扩展,它在反编译后重新对齐代码。

使用 Eclipse 进行调试时,您只需要将 jar 文件放在类路径中即可!无需反编译整个 jar,重新对齐或其他任何操作......只需调试并开心:-)

下面是如何做到这一点:http: //gauchoacomecable.wordpress.com/2011/10/14/eclipse-debug-java-without-source-code-jd-eclipse-and-realignment/

于 2011-10-14T12:48:38.037 回答
0

我增强了“Realignment for JD Eclipse”插件以正确排列枚举和字段,并将其与 JD Eclipse 一起发布在我自己的更新站点上:http: //mchr3k-eclipse.appspot.com/

有关我的更改的详细信息:http: //mchr3k-coding.blogspot.co.uk/2012/07/realignment-for-jd-eclipse.html

于 2012-07-10T07:21:25.820 回答