我正在尝试远程调试 Java 小程序,但我似乎无法使 -agentlib:jdwp JVM 参数起作用。我已经尝试在 Java 控制面板中为使用的特定 JRE 指定它,并且我已经尝试通过用于启动小程序的 JNLP 文件来设置它。
为小程序启动设置 JVM 参数的正确方法是什么?特别是远程调试。
最佳答案
查看 similar SO question ,我找到了以下答案...
有时为了调试一些与安全相关的东西,浏览器插件环境与 appletviewer 差别太大。以下是在浏览器中有效调试小程序的方法:
1) 获取二进制文件的调试信息
从 JRE_HOME/lib 备份 .jar 文件
(下载并)安装与您的 JRE 版本相同的 JDK。
将.jar 文件从JDK_HOME/jre/lib 复制到JRE_HOME/lib
JDK 中的文件编译时包含调试信息(源代码行号信息、变量名等),而 JRE 文件没有这些信息。
否则,您将无法在调试器中有意义地单步执行核心类代码。
2) 启用 Java 插件调试
转到 Java 控制面板/Java/Java 运行时设置/查看/用户/运行时参数
并添加启用调试的选项。像这样:
-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n
有趣的选项是端口(这里使用 2502,你几乎可以使用任何空闲端口,记下来以备后用)和挂起 - 如果你需要调试小程序启动、类加载等,将它设置为"is"。这样,当您访问一个小程序页面时,浏览器似乎会卡住,因为 JVM 会立即暂停等待调试器连接。
3) 使用您喜欢的 IDE 远程调试 Java 插件
例如,在 Eclipse 中,选择 Run/Debug Configurations .../Remote Java Application
单击“新建”按钮。
确保连接类型是“Socket Attach”,如果您的浏览器是本地的,请选择 localhost 作为主机,以及您之前选择的端口(示例中为 2502)。
您可能必须在 JDK 中的源选项卡上包含 src.zip 才能使 Java 核心类源可用。
保存配置,一旦您的浏览器运行插件(JVM 挂起或未挂起),运行远程调试器连接到插件 JVM,打开一个包含您的 applet 源的项目。
关于java - 设置用于小程序启动的默认 JVM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013378/