转载自网络文章,部分内容做了调整。【转载】http://www.ibm.com/developerworks/cn/linux/opensource/os-ecbug/PaulLeszek(pawel.leszek@ipgate.pl),独立软件顾问2003年10月09日本文概述了怎样使用Eclipse平台的内置调试功能来调试您的软件项目。调试是程序员无法回避的工作。调试方法有许多种,但归根结底,就是找到引发错误的代码。举例来说,在Linux应用程序中,分段故障被认为是最常见的错误之一。当程序尝试访问未分配给它的内存并因为分段违例而终止时,将产生这种错误。要修正这种错误,您需要找到引发该行为的那行代码。一旦找到有问题的代码行,这对于知道引发错误的上下文及其相关的值、变量和方法也是有所帮助的。使用调试器将使查找这些信息变得相当简单。Eclipse调试器及Debug视图Eclipse平台的特色在于内置了Java调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。此外,您还可以调试在远程机器上运行的应用程序。Eclipse平台主要是一个Java开发环境,但其体系结构同时也向其它编程语言开放。如以下您将看到的,同一个Eclipse的Debug视图也可用于C和C++编程语言。Eclipse平台工作台(EclipsePlatformWorkbench)及其工具是基于Java开发工具(JDT)组件所构建的。这些组件向Eclipse提供以下功能:项目管理工具透视图和视图构建器、编辑器、搜索和构建功能调试器Eclipse调试器本身是作为Eclipse二进制文件中包含的标准插件而存在的。Eclipse还有一个特别的Debug视图,允许您在工作台中管理程序的调试和运行。它为调试中的每个目标显示其暂挂线程的堆栈帧。程序中的各个线程以作为树的节点出现,而Debug视图则显示运行中的各目标的进程。如果暂挂一个线程,则其堆栈帧显示为子元素。在您开始使用Eclipse调试器之前,假定您已经安装了适当的JavaSDK/JRE(我推荐您使用JavaVM1.5)和Eclipse平台SDK3.2+,且两者都工作正常。一般来说,先使用Eclipse样本来测试一下调试选项是一个好主意。调试环境【Debug】下运行NC中间件。调试环境【Debug】下运行NC客户端快捷键:Ctrl+Shift+R输入:HelloWorldUI选中此文件内的任意地方,输入快捷键:Ctrl+O输入:HelloWorldUI定位到默认的构造方法,在左侧双击红色区域,设置一个断点。设置断点后的样子如下:双击已打开的客户端界面左侧的【客户化开发管理】【培训专用】【界面测试专用】节点。Eclipse中程序会运行到设置的断点处,并挂起。图1.EclipseDebug视图用户界面的常规视图调试Java在您能调试您的项目之前,需要先完整地编译和运行代码。您首先需要为您的应用程序创建运行配置并确认其正常启动。之后,您需要使用Run>Debug...菜单,以同样的方式设置调试配置。您还需要选择作为主Java类的由调试器使用的类(也请参阅图2)。对一个项目,您希望有几种调试配置就可以有几种。当调试器启动后(通过Run>Debug...),会在一个新窗口打开它,您可以准备开始调试。图2.在调试配置中设置项目的主Java类以下是最常见的Eclipse调试操作的示例指示信息:设置断点当您启动应用程序以进行调试时,Eclipse自动切换到Debug透视图。无庸置疑,最常见的调试过程就是设置断点,以允许检查在条件语句和循环中的变量和值。要在Java透视图的PackageExplorer视图中设置断点,双击所选的源代码文件,在编辑器中打开它。遍历全部代码,将光标放置在含有可疑代码的那一行的标记栏上(在编辑器区域的左侧)。双击以设置断点(也请参阅图3)。图3.在编辑器左侧边缘可看到两个断点标记现在通过Run>Debug...菜单启动调试会话。有一点很重要,不要把数条语句放在同一行,因为您不能在同一行的多条语句上单步跳过或设置行断点(也请参阅图4)。图4.视图通过左侧边缘的箭头指出当前正在执行的行条件断点一旦您找到出错的地方,您会想要了解在崩溃前程序在干些什么。完成该工作的一种方法是单步执行程序中的每条语句,一次一句,直到到达出问题的地方。有时候更好的方法是仅运行某段代码并在出问题的地方终止其执行,这样就可以检查该位置上的数据。要实现这一点,可能要声明每当表达式的值更改时就被触发的条件断点(请参阅图5)。此外,在输入条件表达式时还可以使用代码辅助。图5.设置条件断点触发器对表达式求值要在Debug透视图的编辑器中求表达式的值,选中设置有断点的一整行,并在上下文菜单中选择Inspect选项(请参阅图6)。表达式是在当前堆栈帧的上下文中求值的,其结果显示在Display窗口的Expressions视图中。图6.用Inspect选项求表达式的值查看变量Variables视图(在Display窗口中)显示了选中的堆栈帧中的变量值(请参阅图7)。要查看所请求的变量,只需展开Variables视图中的树直到您看到所请求的元素为止。您也可以在Debug视图中单步执行代码的同时,在Variables视图中查看变量。选中“valuesList”变量,右键选择【Display】(或者快捷键:Ctrl+Shift+D),在弹开的视图中可以查看此变量的值。也可以在此视图中写入一些Java代码片段。如下图所示:图7.在Display窗口中查看变量当调试器在断点上停止时,您可以通过在Run>Debug...菜单上选择StepOver选项来继续调试器会话(请参阅图8)。这将单步跳过突出显示的代码行并执行同一个方法中的下一行(或者它在调用当前方法的方法中继续)。作为最后一步的结果而发生更改的变量用颜色突出显示(缺省值是红色),所用颜色可在“ChangedVariableValueColor”首选项(由DebugVariableViews指定)中指定。图8.Run...菜单中的调试器命令要在Debug视图中暂挂线程的执行,选择一个运行中的线程并单击Debug视图工具栏中的Suspend按钮。会显示该线程的当前调用堆栈,并且在Debug透视图的编辑器中突出显示当前执行的行。暂挂线程时,将光标放置到Java编辑器中的变量上,该变量的值显示在一个小悬浮窗口中。同样,该线程的顶部堆栈帧被自动选中,该堆栈帧中的可视变量显示在Variables视图中。可以通过在Variables视图中单击变量名来检查相应的变量。结束语Eclipse平台提供了内置的Java调试器,该调试器具有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。它还可以用于调试在远程机器上运行的应用程序。更多资料可查看Eclipse自带的帮助文件。