作为编程人员,程序的调试是一项基本功。在不使用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. vpn探测

    root@bt:~# ike-scan -M -v 192.168.1.102 root@bt:~# sslscan 192.168.1.102

  2. (转)Eclipse中使用Ant

    Eclipse中使用Ant 分类: JAVA 工具 服务器2014-08-05 09:59 5507人阅读 评论(0) 收藏 举报 anteclipse http://286.iteye.com/bl ...

  3. 阿里dom操作题

    请写一个 getParents 方法让它可以获取某一个 DOM 元素的所有父亲节点. function getParents(id){ var obj=document.getElementById( ...

  4. IIS7无后缀URL部署问题 MVC4 MVC URL映射 windows server 2008

    前言和中间一段都是我找到问题的过程和思维方法.没兴趣的可以直接跳过看后面的问题和解决. 前言: 问题发生在站点完成后,部署到服务器上.以为这个是最轻松的工作.结果悲剧了.windows server ...

  5. [转] Eclipse 使用 Link 方式进行插件的安装

    下方来自 http://www.iteye.com/topic/1113353 Eclipse 的插件安装方法一般有以下几种(以安装 SVN 插件为例说明,Eclipse 版本为:3.7/Indigo ...

  6. JMS连接WMQ及收发消息

    因为对JMS的了解也只算入门级,有些概念也很模糊,不过,卤煮会尽可能去介绍的.另外,sample code都调试过可以跑. 1.神马是JMS? jms即Java消息服务(Java Message Se ...

  7. scp命令和sftp命令

    scp帮助命令: man scpscp功能:下载远程文件或者目录到本地,如果想上传或者想下载目录,最好的办法是采用tar压缩一下,是最明智的选择.从远程主机下载东西到本地电脑拷贝文件命令 scp us ...

  8. SQL 复习二(数据查询语言)

    1.1 数据查询语言 DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ FR ...

  9. JSON的BUG

    问题描述: method_cfg["input_method"][0].asString() 报错误: test1.cpp:40:46: error: ambiguous over ...

  10. LPC1788的内部EEPROM使用

    Lpc1788内置有eeprom 使用代码 #ifndef __E2PRONINCHIP_H_ #define __E2PROMINCHIP_H #include "common.h&quo ...