使用Eclipse平台进行调试
2013-11-21 12:36
211 查看
前言
之前调试php是在本地搭建了LNMP环境,在可能出错的地方用echo和exit进行调试。调试c是直接命令行gdb调试,到了java这里还是要学习一下Eclipse的调试方法、原文链接:使用 Eclipse 平台进行调试
Eclipse调试器和Debug视图
Eclipse SDK是针对Java开发工具(Java Development Tools,JDT)的项目,它具有一个内置的Java调试器,可以提供所有标准的调试功能,包括分步执行、设置断点和值、检查变量和值、挂起和恢复线程的功能。除此之外,还可以调试远程机器上运行的应用程序。Eclipse平台很健壮,因为其他编程语言可以将该平台提供的调试工具用于各自的语言运行时。正如下文所示,同一个Eclipse Debug视图也可以用于C/C++编程语言Eclipse平台工作台及其工具是围绕JDT组件构建的,该组件为Eclipse提供了下列特性:
项目管理工具
透视图和视图
构造器、编辑器、搜索和构建功能
调试器
Eclipse调试器本身是Eclipse内的一个标准插件集。Eclipse还有一个特殊的Debug视图,用于在工作台中管理程序的调试或运行。它可以显示每个调试目标中挂起线程的堆栈框架。程序中的每个线程都显示为树中的一个节点,Debug视图显示了每个运行目标的进程。如果某个线程处于挂起状态,其堆栈框架显示为子元素
Eclipse Debug透视图的一般视图
调试Java语言
在可以调试项目前,需要干净地编译和运行代码。首先,需要为应用程序创建一个运行配置,确保应用程序可以正确启动。然后,需要通过Run > Debug菜单以类似的方式设置调试配置。还需要选择一个类,将它作为调试的主Java类来使用。你可以按照自己的意愿为单个项目设置多个调试配置。当调试器启动时(从Run > Debug),会在一个新的窗口中打开,这时就可以开始调试了在调试配置中设置项目的主java类
接下来,会讨论Eclipse中的一些常用调试实践
设置断点
在启动应用程序进行调试时,Eclipse会自动切换到Debug透视图。毫无疑问,最常见的调试步骤是设置断点,这样可以检查条件语句或循环内的变量和值。要在Java透视图的Package Explorer视图中设置断点,双击选择的源代码文件,在一个编辑器中打开它。遍历代码,将鼠标放在可疑代码一行的标记栏(在编辑器区域的左侧)上,双击即可设置断点在编辑器左侧看到的三个断点:
现在,从Run -> Debug菜单启动调试会话。最好不要将多条语句放在一行上,因为会无法单步执行,也不能为同一行上的多条语句设置行断点
计算表达式的值
为了在Debug透视图的编辑器中计算表达式的值,选择设置了断点的那行代码,在上下文菜单中,通过Ctrl+Shift+I或右键单击你感兴趣的变量选择Inspect选项。在当前堆栈框架的上下文中会计算表达式的值,在Display窗口的Expressions视图中会显示结果通过Inspect选项计算表达式的值:
剪切活动代码
Display视图允许你以剪切的方式处理活动代码。要处理一个变量,在Display视图中输入变量名即可,视图会提示您一个熟悉的内容助手。我对Display窗口使用还不了解,显示Display窗口的方法(window -> Show View -> Display)
当调试器停止在一个断点处时,您可以从Debug视图工具栏中选择Step Over选项,继续调试会话。该操作会越过高亮显示的那行代码,继续执行同一方法中的下一行代码。执行上一步后发生改变的变量会用某种颜色高亮显示(默认是黄色)。颜色是可以在调试首选项页面中改变的
改变颜色的变量:
要在Debug视图中挂起执行线程,选择一个执行线程,单击Debug视图工具栏中的Suspend。该线程的当前调用堆栈就会显示出来,当前执行的代码就会在Debug透视图中的编辑器中高亮显示。挂起一个线程时,将鼠标放在java编辑器中的变量上,该变量的值就会在一个小的悬停窗口中显示出来。此时,该线程的顶部堆栈框架也会自动选中,其中的可视变量也会在Variables视图中显示出来。您可以通过单击Variables视图中合适的变量名来检查变量
相关文章推荐
- 使用DBUnit集成Spring简化测试
- Mac下安装java开发环境
- Java解析HTML到org.w3c.dom.Document,再把Document输出到文件。
- powerdesigner Could not Initialize JavaVM!
- 如何覆写java中的equals和hashcode方法
- java 动态代理深度学习(Proxy,InvocationHandler),含$Proxy0源码(转)
- Java 单例类的实现!
- java内存分配中的栈与堆
- JAVA之ServerSocket的几个单线程多线程的例子
- 如何将Android默认的Camra程序导入到eclipse中
- java 读取 ajax post 到后台的Json数据
- 在eclipse里面开发android应用,不能新建Activity
- 解决Spring MVC 对AOP不起作用的问题
- 安装TestNG在eclipse中的插件
- 准备阶段
- myeclipse 使用weblogic10启动hibernate项目时出现ClassNotFoundException: org.hibernate.hql.ast.HqlToken异常的解决办法
- spring配置数据源的4种方式--简介
- Eclipse 快捷键
- java.text.SimpleDateFormat的使用
- Java中Set的遍历