【问题标题】:How to debug compiled Java code in Eclipse [closed]如何在 Eclipse 中调试已编译的 Java 代码
【发布时间】:2010-12-26 16:49:42
【问题描述】:

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

我的环境:

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

谢谢。

【问题讨论】:

  • 如果你反编译了,你不能用 -g 编译回来,然后像你自己的源代码那样进行调试。
  • 重新编译反编译的源代码会产生完全相同的类文件吗?我认为不会。但如果 OP 可以用自己的类文件替换类文件,那么我想这是可行的。
  • 请注意,IntelliJ 14+ 内置了反编译器。

标签: java eclipse debugging decompiler


【解决方案1】:

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

【讨论】:

  • @Emmanuel Dupuy:“无源调试类”有什么进展吗?
  • @rafalmag 重新对齐算法已准备就绪。你可以在这里测试它:java.decompiler.free.fr/?q=preview。它与 JD-Eclipse 的集成需要几个月的时间。可以说它会在 12 月准备就绪。目前,JD-you-可以使用 Eclipse + Alex Kosinsky 的扩展:sourceforge.net/projects/realignmentjd
  • 另外,github.com/mchr3k/jdeclipse-realign 是 Alex 工作的一个分支,它提供了一种在反编译的类文件和附加源之间切换的好方法;使用 eclipse 3.7 和 java 6 对我来说效果很好 - 让没有源代码的调试变得更加容易!
  • JD-Eclipse有进展吗?
【解决方案2】:

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

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

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

【讨论】:

  • 嗯,这种方法是最合适的——它似乎有效(动态反编译 Java 类,在调试时显示源代码)。似乎我做得很好,但错过了几次重新启动 Eclipse。如果反编译文件的所有行都匹配,那将是完美的,因为现在我得到很多 MISALIGNED。
  • 同意,但是jad不是开源的,作者好像已经放弃了。希望 jadlipse 支持的新反编译器最终会比 jad 更好。
  • MISALIGNED 是由于 jad 创建反编译源的方式造成的。我相信它是连续写的,不能来回移动以更好地放置东西。
  • @tori,请注意,如果将 { 和 } 放在 same 行而不是下一行,我发现错位较少。检查 jadclise 配置面板。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    在eclipse中打开Window -> Preferences -> General ->Editors -> File Associations 选择 *.class 文件类型 将其与 JD-Eclipse 关联 设置为默认值

    祝你好运

    【讨论】:

    • 对我来说,这不适用于调试。
    • 它没有用
    【解决方案5】:

    您可以使用 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 文件后使用配置构建路径。

    【讨论】:

    • 这是我见过的行号解决方案的第一次提及!谢谢。可悲的是主页已关闭!
    • 刚刚检查了网站。如果您仍然有问题,您可以将具体的详细信息发送给站点上的蜘蛛。他会爬遍所有问题。
    • 我设法下载并使用了脚本,非常好。它对无序行号的处理很烦人,但可以解决。
    【解决方案6】:

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

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

    【讨论】:

    • 你会推荐哪个反编译器?
    • 我最近没有进行反编译(开源优势...),但我记得 JAD 和 JODE 会产生好的结果。在stackoverflow.com/questions/31353stackoverflow.com/questions/1384619 上查看更多信息
    • 是的,我正在考虑这种方法,但是如果有很多库,这太烦人了,所以我正在寻找一种没有任何开销的“自动方法”。
    • 使用命令行反编译器,编写一个 ant(甚至是 shell)脚本,遍历文件并生成 java 文件。
    【解决方案7】:

    对我有用的解决方案是在应用补丁后使用 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/

    【讨论】:

      【解决方案8】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 2010-10-26
      相关资源
      最近更新 更多