java - 是否可以反编译和调试 Java 应用程序?

标签 java eclipse

是否可以反编译 Java 应用程序并使用反编译代码对其进行调试?

我更感兴趣的是使用反编译代码进行调试的能力,而不是反编译本身(这很简单)。

最佳答案

这确实是可能的,正如许多其他人已经指出的那样。

如果您只想反编译一个 JAR 并通过直接运行它们来调试反编译的类(即使用它们作为源),有很多反编译器可以很好地为您服务。

如果您打算调试应用程序中使用的 JAR,请在选择反编译器时注意适当的源代码行号对齐功能。看看例如 this question .您最终可以得到这样的反编译代码:

Line X /* Line Y */ int x = y
Line Y (anything can be here, it could even not exist)

X 和 Y 的值完全不同。这意味着反编译的 .java 文件中的 X 行对应于编译代码的 Y 行。调试 jar 时,您必须在源文件中的第 Y 行 放置一个断点以停在那里。调试起来可能会很烦人。有些反编译器会根据行号对齐源文件中的反编译代码。

Line X /* Line X */ int x = y

我用过JD-Eclipse Realign在 Eclipse 上取得成功。相信我,使用源行对齐调试反编译代码确实有所不同。

关于java - 是否可以反编译和调试 Java 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154893/

相关文章:

java - 为什么 fn 是 :escapeXml() adding square brackets to String

java - 如何使用java修剪xml标签和值之间的空格

java - Spring Security - 多个身份验证提供者

java - Stringbuilder 格式化日期

java - 数量字符串(复数)的格式为 ="false"

eclipse - [ eclipse ] : How open-source projects get funded?

java - 从自定义适配器获取父布局

android - MySQL - 使用 JSON 的 Android 应用程序连接(使用 logcat)

java - 日历卡住 - 为什么?

java - 接口(interface) OnClickListener 无法使用我的 onClick 方法?