当前位置:  开发笔记 > 编程语言 > 正文

你如何调试Java Applets?

如何解决《你如何调试JavaApplets?》经验,为你挑选了2个好方法。

目前,我所拥有的唯一信息是浏览器状态栏中的单行错误消息.

你知道如何获得堆栈跟踪吗?



1> Sami Koivu..:

除了明显使用Java控制台和applet查看器之外,从Java 6 update 7开始,您可以使用JDK附带的VisualVM(JDK_HOME/bin/visualvm).它允许您查看每个线程的堆栈跟踪,甚至可以查看所有对象实例.

AppletViewer非常方便,您可以从Eclipse运行"Run as/Java Applet",或者"Debug As/Java Applet"来调试您的applet类.

但是,有时为了调试一些安全相关的东西,浏览器插件环境与appletviewer太不同了.以下是在浏览器中有效调试applet的方法:

1)获取二进制文件的调试信息

从JRE_HOME/lib备份.jar文件

(下载并)安装与JRE相同版本的JDK.

将.jar文件从JDK_HOME/jre/lib复制到JRE_HOME/lib

JDK中的文件是使用包含的调试信息(源代码行号信息,变量名等)编译的,并且JRE文件没有此信息.

如果没有这个,你将无法在调试器中有意义地进入核心类代码.

2)启用Java Plug-in的调试

转到Java控制面板/ Java/Java运行时设置/视图/用户/运行时参数

并添加选项以启用调试.像这样的东西:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

有趣的选项是端口(在这里使用2502,几乎可以使用任何空闲端口,只需将其写下来以供日后使用)和暂停 - 如果需要调试applet启动,类加载等,请将其设置为"y" .这样,当您访问applet页面时,浏览器似乎会冻结,因为JVM会立即暂停,等待调试器连接.

3)使用您喜欢的IDE远程调试Java插件

例如,在Eclipse中,选择Run/Debug Configurations .../Remote Java Application

单击"新建"按钮.

确保连接类型为"Socket Attach",如果您的浏览器是本地的,则选择localhost作为主机,并选择之前选择的端口(示例中为2502).

您可能必须在源选项卡上的JDK中包含src.zip以使Java核心类源可用.

保存配置,一旦浏览器运行插件(JVM挂起或未挂起),运行远程调试器以连接到插件JVM,并打开包含applet源的项目.


在Windows 2008上(我认为对于Windows 7也是如此)我必须以管理员身份运行IE才能工作.我使用共享内存传输.

2> Bob Cross..:

这篇文章有点陈旧但仍然相关(包括标题为"如何在Java插件中调试Applet"的部分).

编辑:获得堆栈跟踪的更好方法是使用Java插件控制台.如果您在该窗口中点击"t",您将看到以下内容:

打印出所有现有的线程组.显示的第一组是Group main.ac代表活动计数; 它是线程组及其子线程组中活动线程的总数.agc代表活跃的群体计数; 它是线程组的活动子线程组的数量.pri代表优先权; 它是线程组的优先级.在Group main之后,其他线程组将显示为Group,其中name是与applet关联的URL.单个线程列表将显示线程名称,线程优先级,如果线程处于活动状态,则为活动状态;如果线程处于被销毁状态,则显示为已销毁;如果线程为守护程序线程,则为守护程序.

我在该控制台中经常使用的另一个命令是0-5的跟踪级别:

这将设置跟踪级别选项,如下一节" 跟踪和日志记录"中所述.

从该页面,您将看到级别如下所示:

0 - 关

1 - 基本

2 - 网络,缓存和基本

3 - 安全,网络和基础

4 - 扩展,安全,网络和基础

5 - LiveConnect,扩展,安全性,网络,临时和基本

这些工具都非常有用,因为你试图解开世界上你的小程序的头部.我知道他们为我工作过.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有