Java使用Debug进行程序调试

来源:互联网 发布:西安网络电视在线直播 编辑:程序博客网 时间:2024/06/05 14:33

一、

1、双击行号前面生成断点(再次双击断点位置可取消断点)。

 

2、右键Debug As----->Java Application开始Java调试程序。(快捷键Alt + Shift + D, J


3、界面左侧:

 

界面右侧:

 

二、

1、调试时的控制按钮:

1)F5——进入:移动到下一个步骤,如果当前行有一个方法调用,该控件将会跳转到被调用方法的第一行执行。

2)F6——跳出:移动到下一行。如果在当前行有方法调用,那么会直接移动到下一行执行。不会进入被调用方法体里面。

3)F7——返回:从当前方法中跳出,继续往下执行。

4)F8——移动到下一个断点处执行。

5)Step Into (F5) 跳入 
6)Step Over (F6) 跳过 
7)Step Return (F7) 执行完当前method,然后return跳出此method 
8)step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置Filter:window--->preferences--->java--->Debug--->step Filtering) 
9)resume 重新开始执行debug,一直运行直到遇到breakpoint 
10)hit count 设置执行次数适合程序中的for循环(设置 breakpoint view-右键hit count) 
11)inspect 检查 运算。执行一个表达式显示执行值 
12)watch 实时地监视变量的变化 

2、断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint、method breakpoint、exception breakpoint。

1)field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂 

2)添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint) 
3)添加Exception breakpoint 捕抓到Execption时暂挂
3、断点属性: 
1)hit count 执行多少次数后暂挂,用于循环 
2)enable condition 遇到符合你输入条件(为ture/改变时)就暂挂 
3)suspend thread 多线程时暂挂此线程 
4)suspend VM 暂挂虚拟机 

4、variables 视图里的变量可以改变变量值,在variables 视图选择变量点击右键--change value.一次来进行快速调试。 
5、debug 过程中修改了某些code后--〉save&build-->resume-->重新暂挂于断点

三、

1、条件断点

在调试界面中,“断点”视图会把所有被创建的断点列出来。可以给它加一个布尔条件,该断点会被激活并且如果布尔条件为真,就会执行该断点,否则将会跳过往下执行。


2、异常断点

在断点视图中,有一个J!标记按钮,可以使用该按钮来添加一个Java异常断点。例如,想让程序在遇到空指针异常(NullPointerException)时,仍然能继续调试,可以使用该按钮来添加一个异常断点。


3监视点

当选定的属性访问或修改程序时,程序会停止执行并允许进行调试。在Outline视图中选择一个类变量并从上下文菜单中选择切换监视点,属性监视点将会被创建,在断点(Breakpoints)视图中会把所有监视点用列表的形式显示出来。


4评估/检查

Ctrl+Shift+D或者Ctrl+Shift+I来显示选定变量或者表达式的值。也可以给一个变量或表达式添加永久观察点,当程序在调试时,这些观察点就会在表达式视图(Expression view)中显示出来。在变量上右键,选择"Change Value" 在弹出的对话框中可修改变量的值;或是在值查看窗口中修改,Ctr+S 保存后,变量值就会变成修改后的新值。


5修改变量值

在调试过程中可以修改变量值。先选好一个变量然后进入变量视图(Variables view),根据变量类型在其对应的Value列里输入值。


6Main函数里面停止执行

在运行/调试设置中,编辑配置对话框中有“Main”这个选项卡,可以勾选“Stop in main”这个复选框。如果选中,那么在调试一个基于main方法的Java程序时,程序会在main方法第一行位置便停止执行。


7环境变量

并不是在系统属性中添加环境变量,可以在编辑配置对话框中地进行添加。


8Drop to Frame

调试期间,可以重新跳到调用堆栈框架的开始处执行,并且变量值也会回到最初。根据回档调整堆栈的深度,这个功能的主要用途是所有变量状态可以快速回到方法开始执行时候的样子,可以重新进行一遍一遍执行,这样就可以在你关注的地方进行多次调试,但是在执行过程中也会产生一些副作用,比如插入到数据库里面的数据是无法删除的。


9、分布过滤

当进入(F5)方法的时候,还可以访问其外部库(比如java.*),可能不需要这个库,就可以在Perference选项卡页面添加一个过滤器来排除这个包。

 

0 1