作为编程人员,程序的调试是一项基本功。在不使用IDE的时候,程序的调试多数是通过日志或者输入语句(System.out.println)的方式。可以把程序运行的轨迹或者程序运行过程中的状态显示给用户,用户据此对程序进行分析调试。实际上这样的调试并不是非常方便。
在多数IDE中都提供了debug功能,可以让用户单步执行程序,在执行的过程中来查看程序中的各变量的状态。并且在程序运行过程中还可以调整状态的值。
下面以Eclipse为例介绍如何使用debug调试程序。
注意:要使用Eclipse提供的debug功能,必须在Eclipse环境中启动服务器(对Web应用)或者运行程序(对Application应用)。
调试的主要涉及如下几个方面:
l         设置断点;
l         单步跟踪;
l         查看变量或者对象的状态;
l         动态修改变量的状态;
l         终止运行;
l         视图切换;
l         删除断点。
下面分别进行介绍。
10.5.1 设置断点
设置断点的目的是让程序运行到这个语句的时候停在这个地方。一般情况下,当你怀疑某个地方可能发生错误的时候,可以在这个地方之前增加断点,通常断点添加在可执行代码上,而不是变量的声明语句上。
要添加断点,在代码行的左侧空白处双击即可。
10.5.2 单步跟踪
设置断点之后运行程序,程序运行到断点时会停留在断点所在行。然后可以单步执行。
注意:光标停留在某一行上的时候表示准备执行这一行。
要单步调试,使用F6。执行下一行。
如果当前行是方法调用并且希望进入到方法中查看执行过程,可以使用F5。
如果想转向上一级方法,也就是跳出当前方法,可以使用F7。
如果想直接运行到下一个断点,使用F8,或者绿色的箭头。如果没有后续断点,程序直接运行到结束的地方。
10.5.3查看变量或者对象的状态
单步执行的主要目的是查看在执行过程中的变量或者对象的状态。
在单步执行的过程中,可以随时查看变量的状态。可以有两种方式查看变量的状态:
l         把鼠标放在要查看的变量的上面(必须是已经执行到的代码),会显示变量的值;
l         通常variable窗口,如果这个窗口没有显示出来,可以通过【Window】à【Show View】à【Variable】,这样会出现一个窗口,窗口中显示所有当前运行过程相关的变量,可以通过这个窗口查看变量的状态。
10.5.4 改变变量的值
在运行程序的过程中在动态调整变量的值。调整的方法如下:
l         在Virables窗口中选择要修改的变量;
l         点击右健,选择Change Value,会弹出窗口;
l         在窗口中输入修改后的值,确定即可。
然后可以继续执行程序。后续执行过程就会使用修改后的变量的值。
另外在程序执行的过程中可以随时修改程序,修改程序之后会继续执行。
10.5.5 终止程序运行
如果在调试过程中已经发现错误,或者不希望程序继续向下执行,可以终止程序。
要终止程序,可以使用红色的方按钮。
注意:这样的错误,会把当时运行的服务器停掉。
10.5.6 切换视图
debug开始之后,会打开debug窗口。随时可以切换到开发视图。
要切换到其他视图,选择【Window】à【Open Perspective】,然后从列表中选择,如果在列表中看不到相应的视图,可以选择【Others】,然后从中选择相应的视图。
10.5.7 删除断点
在调试结束之后,需要删除断点。
要删除断点可以有如下方式:
l         在添加断点的地方双击,如果双击的地方有断点,可以取消断点,如果没有断点,可以添加断点。
l         在调试视图中的BreakPoints窗口中选择某个断点,然后点击右健,在弹出式菜单中选择【删除】,或者直接点击右健,选择【Remove All BreakPoints】。
l         在主菜单中的【run】子菜单中,选择【Remove All BreakPoints】。
 

关于调试的更多内容,参考教材:  《Java Web程序设计基础教程》第15章 程序调试

Eclipse中应用的调试的更多相关文章

  1. 如何在Eclipse中开发并调试自己的插件(或者说如何将自己的代码插件化)

    Setting up Eclipse to create and debug plugins for ImageJ 最近在做一个关于卫星遥感全链路仿真的项目,由于项目是基于ImageJ开发,而Imag ...

  2. Nodejs学习笔记(二)——Eclipse中运行调试Nodejs

    前篇<Nodejs学习笔记(一)——初识Nodejs>主要介绍了在搭建node环境过程中遇到的小问题以及搭建Eclipse开发Node环境的前提步骤.本篇主要介绍如何在Eclipse中运行 ...

  3. Eclipse中调试Android技巧

    Android eclipse中程序调试 一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的. 步骤如下. 1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键 ...

  4. 在Eclipse中进行HotSpot的源码调试--转

    原文地址:http://www.linuxidc.com/Linux/2015-05/117250.htm 在阅读OpenJDK源码的过程中,经常需要运行.调试程序来帮助理解.我们现在已经可以编译出一 ...

  5. java系列: 在eclipse中调试时,输入的jsp或者servlet页面的地址要区分大小写

    比如在当前web工程中有一个jsp页面的名字是: Welcome.jsp 在eclipse中调试时,如果在浏览器中输入: http://localhost:8080/MavenWeb/welcome. ...

  6. Java基础(57):Eclipse中环境配置(视图字体颜色行号调试快捷键等等)

    1:Eclipse的基本配置 A:程序的编译和运行的环境配置(一般不改) window -- Preferences -- Java 编译环境:Compiler 默认选中的就是最高版本. 运行环境:I ...

  7. [安卓][转]Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

  8. Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

  9. 在eclipse中使用jetty插件替代m2e开发调试maven web项目

    第一步在相应的web项目上配置jetty插件,配置如下: <plugin> <groupId>org.mortbay.jetty</groupId> <art ...

随机推荐

  1. PAT (Advanced Level) 1024. Palindromic Number (25)

    手动模拟加法高精度. 注意:如果输入数字的就是回文,这个时候输出0步. #include<iostream> #include<cstring> #include<cma ...

  2. Xcode7 免证书真机测试

    Xcode很早就有个免证书测试,今天我自己也测试了一把,还是挺好用的,接下来,我就说一下我的大体过程: 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题 ...

  3. Spring--AOP--面向切面编程

    AOP: 面向切面编程. 通过动态代理实现. AOP就3条线, 2条线给剪断. 实现:动态代理 如果实现interface的话, 用Proxy, InvocationHandler. 不实现inter ...

  4. [python]小练习__创建你自己的命令行 地址簿 程序

    创建你自己的命令行 地址簿 程序. 在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码). 这些详细信息应该被保存下来以便以后提 ...

  5. Linux磁盘配额实验

    1.实现磁盘限额的条件 *需要Linux内核支持 *安装quota软件包2.Linux磁盘限额的特点 作用范围:针对指定 文件系统(分区) 限制对象:普通用户帐号.组帐号 限制类型:磁盘容量(默认单位 ...

  6. 【转】C++中this指针的用法详解

    1.this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象 ...

  7. USB自定义HID设备实现-LPC1768

    首先在之前鼠标的基础上修改设备描述符 #include "usbdesc.h" //usb标准设备描述符 const U8 USB_DeviceDescriptor[] = { U ...

  8. ADXL345加速度传感器驱动

    ADXL345 是 ADI 公司的一款 3 轴.数字输出的加速度传感器.ADXL345 是 ADI 公司推 出的基于 iMEMS 技术的 3 轴.数字输出加速度传感器.该加速度传感器的特点有:    ...

  9. NSDate详解及获取当前时间等常用操作

    NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 ...

  10. 【转】HashMap实现原理分析

    1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1 ...