分享
 
 
 

Java调试教程--使用Jikes进行调试

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

摘要

在本练习中,我们将调试 LinkTree.Java 程序。其实代码并没有错误;然而我们完成调试过程只是为了把握这个过程。

--------------------------------------------------------------------------------

Java调试教程--使用Jikes进行调试(上)

SUN Laura Bennett

启动 JD

在本练习中,我们将调试 LinkTree.java 程序。其实代码并没有错误;然而我们完成调试过程只是为了把握这个过程。

开始调试

首先使用以下命令编译程序:

javac -g LinkTree.java

该命令将执行:

e:jdk1.1.6injava -verbose -nojit

-classpath %JD%;%JDK% jd.Main

-classpath %JD%;%JDK%;%CLASSPATH%

-sourcepath e:jikes %1 %2 %3 %4 %5 %6 %7 %8 %9

调试器启动并装入 LinkTree 类,它包含了 main() 方法,安装它以便调试。可以通过在命令 jd 后的命令行上输入参数(如 URL,用于开始打印页面链接)来传递这些参数。

使用 Console 面板

Console 面板显示了所有运行时异常。所有错误流都打印到这里。当应用程序请求时,您也可以在这里输入输入信息。文本信息都打印到 Console 面板。

在 Source editor 面板中逐行单步调试

让我们开始调试应用程序,使用的方法是逐行单步调试应用程序。从菜单或使用鼠标右键选择 Step Into。步入程序将通知调试器开始执行当前源码。始终从应用程序中的main() 方法开始执行。现在应该看到其它填充了信息的面板。我们将提供关于每个面板的讨论和如何使用每个面板的描述。通过单击窗口的右下方的 Step Over 按钮,逐行单步调试代码。将以白色突出显示当前行。不幸的是,不能在左边看到行号,所以我们将在内容中指出行号。下图中显示了用于单步调试的按钮。假如将鼠标放在任何一个按钮上,将出现一个弹出框,说明该按钮的功能。Stepping into 单步进入方法。Stepping Over 转到同一个方法中的下一个语句。Stepping Out 返回到当前方法的调用程序。Run 按钮一直运行到下一个断点或程序结束。

在 Source editor 面板中设置断点

在某一行代码上单击鼠标左键来设置断点。您将看到在所选择行的左边有一个红色圆圈,当中有一个赞叹号。设置断点时,代码将运行到用断点符号标记的那行。假设您正在尝试观察一段特定代码,而这段代码很深,以至于逐行单步调试需要很长时间。解决方案是在希望程序停止的位置设置断点。

本例中,让我们设置断点来监控 links 的值。假如此时应用程序正在调试器中运行,单击 Stop 按钮以终止执行。应用程序终止后,转至应用程序的源代码并用鼠标左键单击

Vector links = new Vector(); 语句(在以下代码样本中以粗体字显示)。

// Recursive method to list all urls in site

private void listAll( int depth )

{

Vector links = new Vector();

{

printURL( depth );

//links = parseHtmlContainsLinks(getName());

}

if( !((links =

parseHTMLContainsLinks(getName())).isEmpty(

)))

{

//links = parseHTMLContainsLinks(getName());

for( int i = 0; i < links.size(); i++ )

{

if

(!(excludedURLS.contains((String)links.elementAt(

i))))

{

LinksTree child = new

LinksTree((String)links.ele

mentAt(i));

child.listAll( depth + 1 );

}

}

}

}

Source 编辑器窗口将显示带有以下断点的代码。

运行应用程序,并观察它在包含断点的那行停止。可以对代码的运行情况执行更深入的分析。下一屏中,我们将讨论检查变量。请注重,检查了变量之后,可以使用 Run 或Step Into 按钮执行逐行单步调试或继续完整的、不间断的执行。

在 Locals 面板中检查变量设置了断点且应用程序暂停之后,Local 面板将显示所有局部变量引用。以下示例中显示了局部变量在应用程序中当前设置的断点位置的状态。可以看到,显示每个局部变量的同时,还显示其相关的类型和值。

在 Callers 面板中查看调用堆栈调用堆栈是一个列表,它列出了在执行的断点位置之前已经调用或执行过的类。最近调用或执行的方法在堆栈的顶部。从上往下数第二个元素发出了一个调用来执行最顶部的方法,依次类推。在以下示例中,从 main() 方法中调用了 listAll()。

在 Threads 面板中检查线程由于 Java 代码是多线程,因此它必须能够监控个别线程的进程。Threads 显示了当前正在执行的线程的状态。在我们的代码中,只有一个线程。在更复杂的应用程序中,可能会看到在 thread 面板中列出了多个线程。

在 Classes 面板中查看已装入的类Classes 面板中列出了在执行程序时装入的类。选择那些类中的任何一个以在 Source 面板中查看代码。请记住,假如没有使用 -g 选项来编译类,就无法查看源码。

完成实例研究

您已经了解如何有效使用 Jikes 调试设施来追捕和查明错误。我们使用相当简单的示例来演示了调试器。我们建议使用更复杂的 Applet 或应用程序来增加您使用调试器的经验。

请记住,Jikes是一个开放源码调试器,所以我们希望您更新并增强它。最后,但也是相当重要的,请与开发者社区共享您的更改

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有