首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

JDB 的简单使用(1)

JDB 的简单使用(1)

[size=1.0625]首先我们写一个最简单的小程序,但是它包含了一些最基本的面向对象要素。

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875]5


[size=0.875]6


[size=0.875]7


[size=0.875]8


[size=0.875]9


[size=0.875]10


[size=0.875]11


[size=0.875]12


[size=0.875]13


[size=0.875]14


[size=0.875]15


[size=0.875]16


[size=0.875]17


[size=0.875]18


[size=0.875]19


[size=0.875]20


[size=0.875]21


[size=0.875]22


[size=0.875]23


[size=0.875]24


[size=0.875][size=0.875]class test
[size=0.875]{
[size=0.875]    int a;
[size=0.875]    int b;
[size=0.875]    test(int aa,int bb)
[size=0.875]    {
[size=0.875]        a = aa;
[size=0.875]        b = bb;
[size=0.875]        }
[size=0.875]    int add()
[size=0.875]    {return a+b;}
[size=0.875]}
[size=0.875]public class hehe
[size=0.875]{
[size=0.875]    public static void main(String args[])
[size=0.875]    {
[size=0.875]        int a = 2;
[size=0.875]        int b = 3;
[size=0.875]        int c= a+b;
[size=0.875]        System.out.println(c);  
[size=0.875]        test kk=new test(1,2);
[size=0.875]        System.out.println(kk.add());
[size=0.875]    }
[size=0.875]}




[size=1.0625]存为hehe.java后,用javac -g hehe.java进行编译。用参数g是为了产生各种调试信息,不用就无法调试。如果这里遇到问题,请参考Helloworld攻略。上面的程序是可以通过的,可以直接用java hehe运行。下面结合该例子谈谈JDB的使用。
[size=1.0625]首先键入jdb hehe 如果出现下面信息,说明系统没有找到调试的类。此时可以用java -classpath . hehe命令解决。

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875][size=0.875]C:\javasource>jdb hehe
[size=0.875]Initializing jdb...
[size=0.875]hehe not found
[size=0.875]>




[size=1.0625]如果出现一下信息,说明开始进行调试,一切正常。如果是调试Applet,则用 appletviewer -debug hehe.html命令进行调试

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875][size=0.875]C:\javasource>jdb -classpath . hehe
[size=0.875]Initializing jdb...
[size=0.875]0xb0:class(hehe)
[size=0.875]>




[size=1.0625]回想VC中的调试,应该是设置断点,然后再进行跟踪。Java中也是一样。用stop命令进行断点设置。然后用 run 命令开始调试,运行程序到断点,这里断点是设置在 main 主函数中。

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875]5


[size=0.875]6


[size=0.875]7


[size=0.875]8


[size=0.875][size=0.875]> stop at hehe:18
[size=0.875]Breakpoint set at hehe:18
[size=0.875]> run
[size=0.875]run hehe
[size=0.875]running ...
[size=0.875]main[1]
[size=0.875]Breakpoint hit: hehe.main (hehe:18)
[size=0.875]main[1]




[size=1.0625]此时可以用locals命令查看变量,用step命令进入下一条命令,也可以用单独一个stop命令来查看断点的设置情况。注意此时b还没有被赋值。

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875]5


[size=0.875]6


[size=0.875]7


[size=0.875]8


[size=0.875]9


[size=0.875][size=0.875]main[1] locals
[size=0.875]Method arguments:
[size=0.875]Local variables:
[size=0.875]  args =
[size=0.875]  a = 2
[size=0.875]main[1] step
[size=0.875]main[1]
[size=0.875]Breakpoint hit: hehe.main (hehe:19)
[size=0.875]main[1]




[size=1.0625]当运行到 System.out.println() 函数时,会出现以下提示:

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875][size=0.875]main[1] step
[size=0.875]main[1]
[size=0.875]Breakpoint hit: java.lang.ClassLoader.loadClass (ClassLoader:247)




[size=1.0625]这个是因为我们跟踪进去了 println 方法,我们一般没有必要这样做,此时可以用next跳过该方法进入到下一条一句。step的含义是进入函数跟踪,next是转入下一条语句执行。我们随时可以键入 locals 和 list 命令来查看变量值和当前运行的代码。下面箭头指到地方即为当前程序运行到的地方。

[size=0.875]1


[size=0.875]2


[size=0.875]3


[size=0.875]4


[size=0.875]5


[size=0.875]6


[size=0.875]7


[size=0.875]8


[size=0.875]9


[size=0.875]10


[size=0.875]11


[size=0.875]12


[size=0.875]13


[size=0.875]14


[size=0.875][size=0.875]main[1] next
[size=0.875]main[1]
[size=0.875]Breakpoint hit: hehe.main (hehe:20)
[size=0.875]main[1] list
[size=0.875]16              {
[size=0.875]17                      int a = 2;
[size=0.875]18                      int b = 3;
[size=0.875]19                      int c= a+b;
[size=0.875]20      =>              System.out.println(c);
[size=0.875]21                      test kk=new test(1,2);
[size=0.875]22                      System.out.println(kk.add());
[size=0.875]23
[size=0.875]24              }
[size=0.875]main[1]




山不在高,有仙则名;水不在深,有龙则灵。
返回列表