除了明显使用 Java 控制台和小程序查看器之外,从 Java 6 update 7 开始,您还可以使用VisualVM http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.htmlJDK 附带的 (JDK_HOME/bin/visualvm)。它允许您查看每个线程的堆栈跟踪,甚至查看所有对象实例。
AppletViewer 非常方便,您可以从 Eclipse 中执行“Run as / Java Applet”来运行,或者“Debug As / Java Applet”来调试您的 applet 类。
然而,有时为了调试一些安全相关的东西,浏览器插件环境与 appletviewer 太不同了。您可以执行以下操作来有效地调试浏览器中的小程序:
1) 获取二进制文件的调试信息
从 JRE_HOME/lib 备份 .jar 文件
(下载并)安装与 JRE 版本相同的 JDK。
将 .jar 文件从 JDK_HOME/jre/lib 复制到 JRE_HOME/lib
JDK 内的文件是用包含的调试信息(源代码行号信息、变量名称等)编译的,而 JRE 文件没有此信息。
如果没有这个,您将无法有意义地进入调试器中的核心类代码。
2) 启用Java插件调试
转至 Java 控制面板/
爪哇/
Java 运行时设置 /
看法 /
用户/
运行时参数
并添加启用调试的选项。像这样的事情:
-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n
有趣的选项是
端口(这里使用 2502,您几乎可以使用任何空闲端口,只需将其写下来以供稍后使用)和挂起 - 如果您需要调试小程序启动、类加载等,请将其设置为“y”。这样,当您访问 applet 页面时,浏览器将显示为冻结,因为 JVM 立即挂起,等待调试器连接。
3) 使用您最喜欢的 IDE 远程调试 Java 插件
例如,在 Eclipse 中,选择 Run / Debug Configurations ... / Remote Java Application
单击“新建”按钮。
确保连接类型为“Socket Attach”,如果您的浏览器是本地浏览器,则选择 localhost 作为主机,并选择您之前选择的端口(示例中为 2502)。
您可能必须在 JDK 的“源”选项卡上包含 src.zip 才能获得可用的 Java 核心类源。
保存配置,一旦您的浏览器运行插件(无论是否暂停 JVM),就运行远程调试器以连接到插件 JVM,并打开包含小程序源代码的项目。