作者:liguisen
Blog:http://blog.csdn.net/liguisen
本文使用的环境是JCreator3.5Pro,jdk1.5。以Java Application为例着重解决以下问题:
1, 如何用JCreator开始进行调试?
2, 用JCreator调试时如何查看变量的值?
3, 用JCreator调试时如何接受从键盘输入的数据?
基础知识:
1, 什么是jdb?
Jdb是jdk自带的一个调试器,你可以以命令行方式使用jdb进行调试。
2, JCreator用什么来进行调试?
JCreator使用jdb来进行调试,但是我们可以使用JCreator的图形界面(确切的说是快捷方式)来调用jdb进行调试,这个对于初学者来说减少了对命令行工作方式的恐惧。
如何用JCreator开始进行调试?
1, 首先,在JCreator中进行调试必须以工程(project)的形式存在,对于单个的java文件是无法进行调试的,如果你已经有了一个java文件,那么应该先建立一个恰当的工程然后把你的文件加进工程里面。
2, 从菜单Build->Start Debugger可以开始进行调试,设置断点(F9),单步执行(F10)等功能均具备,Debug Output窗口可以查看相关信息。
调试中如何查看变量的值?
1, 菜单Build->Debugger->Dump(F8)可以查看变量的值,你也可以先用鼠标选中变量再按F8就可以查看该变量的值。
2, 若Debug Output窗口显示“局部变量信息不可用。使用 -g 编译以生成变量信息”,那么说明你当前编译的class文件没有包含调试信息,解决方法如下:从菜单Configure->Options…选中JDK Tools(为叙述方便,这个步骤下面统称为“打开option对话框”),选择Compiler,再选中<Default>,单击copy,弹出一个对话框,Name处填上名字,例如Compiler_debug,在Parameters选中Include debug info,然后点ok。这样你就为整个JCreator配置了另外一个编译选项,但此时当前工程并没有选择这个选项。关闭Options对话框,从菜单Project->Project Properties打开工程属性对话框,选择JDK Tools再选择Compilers,你会发现多了一个Compiler_debug,选中它,以后我们的工程就用它来进行编译啦(注:其实我们也可以在这里添加这个Compiler_debug),再重新编译就可以查看变量的值了。
调试中如何接受从键盘输入的数据?
如下代码:
import java.io.*;
public class KeyboardInput {
public static void main(String[] args) {
// Add your code here.
char c=' ';
try {
c=(char)System.in.read();
}
catch (IOException ex) {
}
System.out.println ("you enter "+c);
}
}
我们发现,在F10单步调试到c=(char)System.in.read();这一行时,没有地方可以从键盘输入数据,调试无法继续进行下去。继续按F10,提示:main[1] > 未暂停任何对象。解决方法如下:
1,“打开option对话框”,选择Run Application,复制<Default>,命名为Run_debugger,注意Command 项所有选择都不能选!
Parameters项改为:-classpath "$[ClassPath]" -Xdebug –Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,address=jdbconn,server=y,suspend=y $[JavaClass]
单击ok结束。
2,“打开option对话框”,选择Debugger,复制<Default>,命名为Debugger jdbconn,Application Parameters项改为-attach jdbconn(注意空格),点击ok结束。
3,从菜单Project->Project Properties打开工程属性对话框,选择JDK Tools,然后Compiler选择Compiler_debug,Run Application选择Run_debugger,Debugger选择Debugger jdbconn,单击ok结束操作。这一步你还可以改为这样操作:Compiler选择Compiler_debug,其它的选择Default,然后从菜单->build->RunTime Configuration,然后单击new,label填上Debug,Run Application选择Run_debugger,Debugger选择Debugger jdbconn,如有需要,在这里还可以为main方法填上参数,在单击ok结束操作。然后选择从工具栏的Execute或Debug按钮开始工作(不能选择从菜单的Execute Project(F5)或Start Debugger(ctrl+F5)开始),单击旁边的下拉小箭头,选择我们刚才创建的Debug(不是Default)就ok了。
3, 先F7Compile Project,如果第3步你选择了第一种方式,那么直接Execute Project(F5),此时将弹出一个dos窗口,上面显示:'Listening for transport dt_shmem at address: jdbconn',然后这个窗口被挂起(suspend),先不管它,跟着直接Start Debugger(ctrl+F5)开始,然后正常调试,碰到j=System.in.read();这一行时,Debug Output窗口将显示main[1],继续执行,Debug Output窗口将显示main[1] >,此时可以回到刚才的那个dos窗口,输入数据,例如输入一个y回车,然后回到Jcreator继续操作,如果此时你选中c这个变量按F8,你会发现Debug Output窗口将显示main[1] c = y,这表明c的值已经从键盘输入进去了。如果第3步你选择了第二种方式,那么就从工具栏按钮的下拉箭头开始工作吧。
更多的调试功能请参考jdb文档。
Good luck!