eclipse进行调试
编者注 :以下文章最初由Pawel Leszek于2003年5月撰写,并于2007年4月由Chris Aniszczyk更新。
Eclipse调试器和Debug视图
Eclipse SDK(特别是Java™开发工具(JDT)项目)具有内置的Java调试器,该调试器提供所有标准调试功能,包括执行步骤执行,设置断点和值,检查变量和值,以及挂起和恢复线程。 此外,您可以调试在远程计算机上运行的应用程序。 Eclipse平台非常健壮,其他编程语言可以将调试工具用于其各自的语言运行时。 正如您将在下面看到的,相同的Eclipse Debug视图也可用于C / C ++编程语言。
Eclipse Platform Workbench及其工具围绕JDT组件构建,该组件为Eclipse提供以下功能:
- 项目管理工具
- 观点和观点
- 构建器,编辑器,搜索和构建功能
- 调试器
Eclipse调试器本身是Eclipse中包含的一组标准插件。 Eclipse还具有一个特殊的Debug视图,该视图允许您管理Workbench中程序的调试或运行。 它显示您正在调试的每个目标的挂起线程的堆栈框架。 程序中的每个线程都显示为树中的一个节点,“调试”视图显示了正在运行的每个目标的进程。 如果线程被挂起,则其堆栈框架显示为子元素。
在开始使用Eclipse调试器之前,假定您已经安装了适当的Java SDK / JRE(我建议您使用Java VM V1.4)和Eclipse Platform SDK V3.3,并且两者都可以正常运行。 通常,最好先使用Eclipse示例测试调试选项。 如果要开发和调试C / C ++项目,则还需要获取并安装C / C ++开发工具(CDT)。 有关Java SDK / JRE,Eclipse平台和示例以及CDT的链接,请参阅参考资料 。 图1显示了Debug透视图的一般视图。
图1. Eclipse Debug透视图的一般视图
调试Java语言程序
在能够调试项目之前,需要对代码进行编译和干净地运行。 首先,您需要为应用程序创建运行配置,并确保其正确启动。 接下来,您需要使用“ 运行”>“调试”菜单以类似方式设置调试配置。 您还需要选择调试器用作主要Java类的类(请参见图2)。 您可以根据需要为单个项目设置尽可能多的调试配置。 启动调试器后(从Run> Debug ),它将在新窗口中打开,您可以开始调试了。
图2.在调试配置中设置项目的主要Java类
接下来,我们讨论Eclipse中的一些常见调试实践。
设置断点
当您启动应用程序进行调试时,Eclipse会自动切换到“调试”透视图。 毫无疑问,最常见的调试过程是设置断点,该断点将允许检查条件语句或循环中的变量和值。 要在Java透视图的Package Explorer视图中设置断点,请双击选定的源代码文件以在编辑器中将其打开。 浏览代码,然后将光标放在可疑代码所在行的标记栏上(沿着编辑器区域的左边缘)。 双击以设置断点。
图3.两个断点标记在编辑器的左边距中可见
现在,从“ 运行”>“调试”菜单开始调试会话。 重要的是不要将多个语句放在一行上,因为您不能跨过一行或在同一行上的多个语句上设置行断点。
图4.视图指示当前正在执行的行,左边距为箭头
还有一个方便的“断点”视图来管理所有断点。
图5.断点视图
条件断点
一旦知道错误发生的位置,您将希望在程序崩溃之前立即查看它在做什么。 一种方法是逐步遍历程序中的每条语句,一次到达问题点。 有时最好只运行一段代码然后在那一点上停止执行,这样您就可以在该位置检查数据了。 可以声明每当表达式的值更改时触发的条件断点(请参见图6)。 另外,键入条件表达式时,可以使用代码辅助。
图6.设置条件断点触发器
计算表达式
要在“调试”透视图中的编辑器中评估表达式,请选择设置断点的整行,然后从上下文菜单中,通过Ctrl + Shift + I或右键单击您感兴趣的变量来选择“检查”选项。参见图7)。 在当前堆栈框架的上下文中评估表达式,结果显示在“显示”窗口的“表达式”视图中。
图7.使用Inspect选项评估表达式
剪贴您的实时代码
Display视图允许您以剪贴簿类型的方式操作实时代码(参见图8)。 要操作变量,只需在“显示”视图中键入变量的名称,就会为您提供熟悉的内容帮助。
图8. Display视图
当调试器在断点处停止时,可以通过从Debug视图工具栏中选择Step Over选项来继续调试器会话(请参见图9)。 这将跨过突出显示的代码行,并以相同的方法在下一行继续执行(否则它将在调用当前方法的方法中继续执行)。 由于上一步而更改的变量以彩色突出显示(默认为黄色)。 可以在调试首选项页面中更改颜色。
图9.变量更改颜色
要在“调试”视图中挂起线程的执行,请选择一个正在运行的线程,然后在“调试”视图工具栏中单击“ 挂起 ”。 显示该线程的当前调用堆栈,并在编辑器的“调试”透视图中突出显示当前执行行。 当线程被挂起时,将光标放在Java编辑器中的变量上,并且该变量的值显示在一个小的悬停窗口中。 同样,线程的顶部堆栈框架被自动选择,并且该堆栈框架中的可见变量显示在“变量”视图中。 您可以通过单击变量名称在变量视图中检查其名称。
Hotswap错误修复:动态代码修复
如果您正在运行Java虚拟机(JVM)V1.4或更高版本,则Eclipse支持一种称为Hotswap Bug Fixing的功能(在JVM V1.3或更低版本中不可用)。 它允许在调试器会话期间更改源代码,这比退出应用程序,更改代码,重新编译然后再启动另一个调试会话要好。 要使用此功能,只需在编辑器中更改代码并恢复调试即可。 因为JVM V1.4与Java平台调试器体系结构(JPDA)兼容,所以此功能可用。 JPDA实现了在运行的应用程序中替换修改后的代码的功能。 当然,这在启动应用程序或导致失败的过程花费很长时间时特别有用。
如果完成调试后程序尚未完全执行,请从“调试”视图的上下文菜单中选择“终止”选项。 一个常见的错误是在调试器会话中使用“调试”或“运行”而不是“继续”。 这将启动另一个调试器会话,而不是继续当前会话。
远程调试
Eclipse调试器为调试远程应用程序提供了一个有趣的选项。 它可以连接到运行Java应用程序的远程VM,并将其自身附加到该应用程序。 使用远程调试会话在很大程度上类似于本地调试。 但是,远程调试配置需要在“ 运行”>“调试”窗口中进行不同的设置。 您需要首先在左侧视图中选择Remote Java Application条目,然后单击New 。 创建新的远程启动配置,并显示三个选项卡:“连接”,“源”和“公用”。
在“连接”选项卡的“项目”字段中,选择要用作启动参考(用于源代码查找)的项目。 在“连接”选项卡的“主机”字段中,键入运行Java程序的远程主机的IP地址或域名。 在“连接”选项卡的“端口”字段中,键入远程VM接受连接的端口。 通常,在启动远程VM时指定此端口。 当您希望调试器确定远程会话中是否可用“终止”命令时,请选择“允许终止远程VM”选项。 如果您希望能够终止要连接的VM,请选择此选项。 现在,当您选择“调试”选项时,调试器将尝试在指定的地址和端口连接到远程VM,结果将显示在“调试”视图中。
如果启动器无法连接到指定地址的VM,则会显示错误消息。 通常,远程调试功能的可用性严格取决于在远程主机上运行的Java VM。 图10显示了远程调试会话的连接属性设置。
图10.设置远程调试会话的连接属性
调试其他语言
尽管Java语言是Eclipse中使用最广泛的语言,但它是一个可扩展的平台,可以支持许多其他语言。 Eclipse通过C / C ++开发工具(CDT)项目支持C / C ++。 CDT通过调试C / C ++代码的功能扩展了标准的Eclipse Debug视图,并且CDT Debug视图使您可以在工作台中管理C / C ++项目的调试。 CDT不包括其内部调试器,但它为GNU GDB调试器提供了前端,该调试器必须在本地可用。 还有其他项目,例如PHP开发工具(PDT),它们提供了各自的调试器(请参见图11)。
图11. PHP调试器
结论
Eclipse平台提供具有标准调试功能的内置Java语言调试器,包括执行步骤执行,设置断点和值,检查变量和值以及挂起和恢复线程的能力。 它还可以用于调试在远程计算机上运行的应用程序。 Eclipse平台主要是Java开发环境,但是C / C ++,PHP和许多其他编程语言也可以使用相同的Eclipse Debug视图。
致谢
感谢Tyler Anderson创建了图11。
翻译自: https://www.ibm.com/developerworks/opensource/library/os-ecbug/index.html
eclipse进行调试