`

eclipse调试方法

阅读更多

调试是程式员无法回避的工作。调试方法有许多种,但归根结底,就是找到引发错误的代码。举例来说,在 Linux 应用程式中,分段故障被认为是最常见的错误之一。当程式尝试访问未分配给他的内存并因为分段违例而终止时,将产生这种错误。

要修正这种错误,你需要找到引发该行为的那行代码。一旦找到有问题的代码行,这对于知道引发错误的上下文及其相关的值、变量和方法也是有所帮助的。使用调试器将使查找这些信息变得相当简单。

Eclipse 调试器及 Debug 视图

Eclipse 平台的特色在于内置了 Java 调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值及暂挂和恢复线程的能力。此外,你还能调试在远程机器上运行的应用 程式。Eclipse 平台主要是个 Java 研发环境,但其体系结构同时也向其他编程语言开放。如以下你将看到的,同一个 Eclipse 的 Debug 视图也可用于 C 和 C++ 编程语言。

Eclipse 平台工作台(Eclipse Platform Workbench)及其工具是基于 Java 研发工具(JDT)组件所构建的。这些组件向 Eclipse 提供以下功能:

1、项目管理工具

2、透视图和视图

3、构建器、编辑器、搜索和构建功能

4、调试器

Eclipse 调试器本身是作为 Eclipse 二进制文件中包含的标准插件而存在的。Eclipse 更有一个特别的 Debug 视图,允许你在工作台中管理程式的调试和运行。他为调试中的每个目标显示其暂挂线程的堆栈帧。程式中的各个线程以作为树的节点出现,而 Debug 视图则显示运行中的各目标的进程。如果暂挂一个线程,则其堆栈帧显示为子元素。

在你开始使用 Eclipse 调试器之前,假定你已安装了适当的 Java SDK/JRE(我推荐你使用 Java VM 1.4)和 Eclipse 平台 SDK 2.0/2.1,且两者都工作正常。

一般来说,先使用 Eclipse 样本来测试一下调试选项是个好主意。如果你要研发和调试 C/C++ 项目,你还需要得到并安装 C/C++ 研发工具(C/C++ Development Tool,CDT)。有关 Java SDK/JRE、Eclipse 平台和样本及 CDT 的链接,图1显示了 Debug 用户界面的常规视图。


图 1. Eclipse Debug 视图用户界面的常规视图



调试 Java

在你能调试你的项目之前,需要先完整地编译和运行代码。你首先需要为你的应用程式创建运行设置并确认其正常启动。之后,你需要使用 Run > Debug...菜单,以同样的方式设置调试设置。你还需要选择作为主 Java 类的由调试器使用的类(也请参阅 图 2)。对一个项目,你希望有几种调试设置就能有几种。当调试器启动后(通过 Run > Debug...),会在一个新窗口打开他,你能准备开始调试。


图 2. 在调试设置中设置项目的主 Java 类



以下是最常见的 Eclipse 调试操作的示例指示信息:

设置断点

当你启动应用程式以进行调试时,Eclipse 自动转换到 Debug 透视图。无庸置疑,最常见的调试过程就是设置断点,以允许检查在条件语句和循环中的变量和值。要在 Java 透视图的 Package Explorer 视图中设置断点,双击所选的原始码文件,在编辑器中打开他。遍历全部代码,将光标放置在含有可疑代码的那一行的标记栏上(在编辑器区域的左侧)。双击以设 置断点(也请参阅 图 3)。


图 3. 在编辑器左侧边缘可看到两个断点标记



目前通过 Run > Debug...菜单启动调试会话。有一点非常重要,不要把数条语句放在同一行,因为你不能在同一行的多条语句上单步跳过或设置行断点(也请参阅 图 4)。


图 4. 视图通过左侧边缘的箭头指出当前正在执行的行



条件断点

一旦你找到出错的地方,你会想要了解在崩溃前程式在干些什么。完成该工作的一种方法是单步执行程式中的每条语句,一次一句,直到到达出问题的地方。有时候 更好的方法是仅运行某段代码并在出问题的地方终止其执行,这样就能检查该位置上的数据。要实现这一点,可能要声明每当表达式的值更改时就被触发的条件断点 (请参阅 图 5)。此外,在输入条件表达式时还能使用代码辅助。


图 5. 设置条件断点触发器



对表达式求值

要在 Debug 透视图的编辑器中求表达式的值,选中设置有断点的一整行,并在上下文菜单中选择 Inspect 选项(请参阅 图 6)。表达式是在当前堆栈帧的上下文中求值的,其结果显示在 Display 窗口的 Expressions 视图中。


图 6. 用 Inspect 选项求表达式的值



查看变量

Variables 视图(在 Display 窗口中)显示了选中的堆栈帧中的变量值(请参阅 图 7)。要查看所请求的变量,只需展开 Variables 视图中的树直到你看到所请求的元素为止。你也能在 Debug 视图中单步执行代码的同时,在 Variables 视图中查看变量。


图 7. 在 Display 窗口中查看变量



当调试器在断点上停止时,你能通过在 Run > Debug...菜单上选择 Step Over 选项来继续调试器会话(请参阅 图 8)。这将单步跳过突出显示的代码行并执行同一个方法中的下一行(或他在调用当前方法的方法中继续)。作为最后一步的结果而发生更改的变量用颜色突出显示 (缺省值是红色),所用颜色可在“Changed Variable Value Color”最佳选择项(由 Debug Variable Views 指定)中指定。


图 8. Run... 菜单中的调试器命令



要在 Debug 视图中暂挂线程的执行,选择一个运行中的线程并单击 Debug 视图工具栏中的 Suspend按钮。会显示该线程的当前调用堆栈,并且在 Debug 透视图的编辑器中突出显示当前执行的行。

暂挂线程时,将光标放置到 Java 编辑器中的变量上,该变量的值显示在一个小悬浮窗口中。同样,该线程的顶部堆栈帧被自动选中,该堆栈帧中的可视变量显示在 Variables 视图中。能通过在 Variables 视图中单击变量名来检查相应的变量。

热交换错误修正:实时代码修正如果你运行的是 JVM 1.4(Java 虚拟机,Java Virtual Machine),Eclipse 2.0.2 和 2.1 提供一个叫做热交换错误修正(Hotswap Bug Fixing)的新功能(无法用于 JVM 1.3 或更低版本 - 也请参阅 图 9)。

他允许在调试器会话过程中更改原始码,这要比“退出应用程式,更改原始码,重新编译,再启动另一个调试会话”的一系列步骤好多了。要使用该功能,只需在编 辑器中更改代码并恢复调试。由于 JVM 1.4 和 Java 平台调试器体系结构(Java Platform Debugger Architecture,JPDA)兼容,所以能使用该功能。

JPDA 实现了在运行中的应用程式中用经过修改的代码进行替换的能力。当然,当启动你的应用程式或找到出错点需要花费非常长时间的时候,该功能极其有用。


图 9. 热交换错误修正功能不能在JVM1.3及更低版本中使用



如果你完成调试时程式还没有被完整地执行过,请在 Debug 视图中的上下文菜单中选择 Terminate 选项。一个常见的错误是你在调试器会话中使用了 Debug 或 Run 而不是 Resume。这样将会启动另一个调试器会话,而不是继续当前的会话。

远程调试

Eclipse 调试器提供了一个有趣的选项,可用于调试远程应用程式。他能连接到一个运行 Java 应用程式的远程 VM 上,并将其连接到内部调试器上。处理远程调试会话非常类似于本地调试。不过,远程调试设置需求对 Run > Debug...窗口进行不同的设置。你首先要选择左侧视图中的 Remote Java Application 项,单击 New按钮。这样就创建了一个新的远程启动设置,并显示三个选项卡:Connect、Source 和 Common。

在 Connect 选项卡的 Project 域中,选择用作启动最佳选择项的项目(用于查找原始码)。在 Connect 选项卡的 Host 域中,输入运行 Java 程式的远程主机的 IP 地址或域名 。在 Connect 选项卡的 Port 域中,输入远程 VM 接受连接的端口。

一般来说,该端口是在远程 VM 启动时指定的。当你想让调试器确定 Terminate 命令在远程会话中是否可用,能选择 Allow termination of remote VM 选项。如果你希望能终止所连接的 VM,则选择该选项。目前当你选择 Debug 选项时,调试器将尝试按指定的地址和端口连接远程 VM,并在 Debug 视图中显示结果。

如果启动器无法连接至指定位置上的 VM,将显示错误消息。一般来说,远程调试功能的可用性完全取决于远程主机上运行的 Java VM(虚拟机,Virtual Machine)。 图 10显示了远程调试会话的连接属性的设置。


图 10. 设置远程调试会话的连接属性



调试其他语言

Java 是 Eclipse 平台的主语言。然而,Eclipse 平台同时也是个可支持许多其他语言的可扩展平台,而其中最重要的就是支持 C/C++(因为其流行性)。Eclipse 通过用 C/C++ 研发工具(CDT)支持 C/C++。请参阅 参考资料以获取相关链接。

CDT 通过调试 C/C++ 代码的功能扩展了标准的 Eclipse Debug 视图,同时 CDT Debug 视图允许你在工作台中管理 C/C++ 项目的调试。CDT 不包含其内部调试器,但他向必须可在本地使用的 GNU GDB 调试器提供了一个前端。

下载并安装了 CDT 之后,只需转换到 Debug 视图,你就能开始调试当前的 C/C++ 项目了(请参阅 参考资料,以获取一篇介绍怎么安装 CDT 的文章的链接)。这样你能设置(并在执行过程中所有时候更改)代码中的断点,并且跟踪变量和寄存器。

Eclipse 调试器显示你调试中各个目标的暂挂线程的堆栈帧。程式中的各个线程作为树的节点出现。他显示了运行中各目标的进程。请记住当 GNU GDB 调试一个带有调试符号链接的程式时,他最有效。这是在编译过程中由命令行参数 -g 来实现的。需要更多的信息请使用 -ggdb 开关,该参数包含有特定于 GNU GDB 的调试符号。

如果你要调试 servlet,使用 Sysdeo Eclipse Tomcat Launcher。该插件使你能够管理 Tomcat 4.x/3.3 servlet 容器(通过创建和导入一个 Tomcat WAR 项目)。他同时在一个内部 Java Eclipse 调试器中注册一个 Tomcat 进程,这样你就能方便地调试 Tomcat 应用程式了。更有其他几个 Eclipse 插件,使我们能够对 servlet 使用内部 Eclipse 调试器,比如 Cactus 的 Eclipse 插件,Resin 插件和 X-Parrots ServletExec 插件。

结束语

Eclipse 平台提供了内置的 Java 调试器,该调试器具有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值及暂挂和恢复线程的能力。他还能用于调试在远程机器上运行的应用程式。 Eclipse 平台主要是个 Java 研发环境,不过同一个 Eclipse 的 Debug 视图也可用于 C 和 C++ 编程语言。

分享到:
评论

相关推荐

    Eclipse调试方法及log4j调试方法

    Eclipse调试方法及log4j调试方法Eclipse调试方法及log4j调试方法

    Eclipse调试方法入门

    本教程“Eclipse调试方法入门”旨在为初学者提供一套全面且易懂的调试指南,帮助他们理解和掌握在Eclipse中进行程序调试的关键技能。 首先,我们要理解调试的基本概念。调试是识别和修复程序中错误的过程,通过它...

    Eclipse调试方法入门.pdf

    以上就是关于Eclipse调试方法的基本知识点。熟练掌握这些方法对于提高开发效率和代码质量至关重要。Eclipse调试器的高级功能还包括条件断点、异常断点、监视点等,这些都可以帮助开发者更精细地控制调试过程,快速...

    Eclipse编程技术与实例,Eclipse编程技术与实例,StudentSystem,booksystem,Eclipse调试方法入门,Eclipse学习笔记

    "Eclipse调试方法入门"是学习Eclipse不可或缺的部分,它讲解了如何在Eclipse中设置断点、单步执行、查看变量值、跟踪调用堆栈等调试技巧。这对于查找和修复代码中的错误至关重要,也是提升开发效率的有效手段。 ...

    debug下的调试方法 eclipse快捷键大全

    以上就是Eclipse调试方法的一些核心内容,熟练掌握这些技巧,能让你在面对复杂的程序问题时更加游刃有余。在实际开发过程中,不断实践和探索,你会发现Eclipse的强大不仅仅在于它的快捷键,更在于它对开发流程的全面...

    Eclipse使用方法简介

    Eclipse是一款广泛应用于Java开发的集成开发环境(IDE),它为开发者提供了丰富的功能,包括代码编辑、构建管理、调试和测试等。以下是对Eclipse使用方法的详细介绍。 **Eclipse的安装** 要在计算机上安装Eclipse,...

    eclipse调试 eclipse调试

    总结,Eclipse的调试功能强大且全面,包括条件断点、变量断点、方法断点、改变变量值、重新调试以及远程调试等,这些工具可以帮助开发者高效地定位问题,提高开发效率。掌握这些技巧,无论是对初入职场的新手还是...

    eclipse调试java的10个技巧

    "eclipse调试java的10个技巧" Eclipse调试Java的10个技巧是Java开发者们在使用Eclipse进行Java开发时的一些高级调试技巧。这些技巧可以帮助开发者更好地调试Java程序,提高开发效率和质量。 1. 条件断点 条件断点...

    使用 Eclipse 和 PDT 调试 PHP

    传统的调试方法包括输出变量值、使用 logger 类、调整 php.ini 文件等,但是这些方法都存在一定的缺陷和限制。使用 Eclipse 和 PDT 可以实现在 IDE 内进行单步调试,让开发人员更方便地发现和修复错误。 本文将介绍...

    Eclipse调试Java的10个技巧

    ### Eclipse调试Java的十个高效技巧 #### 一、概述 在开发Java应用程序的过程中,调试是一项不可或缺的任务。良好的调试技能能够帮助开发者快速定位问题并解决它们。Eclipse是一款广泛使用的Java集成开发环境(IDE)...

    Eclipse调试Debug的常用技巧

    本文将详细介绍Eclipse调试中的几个常用技巧,包括条件断点、变量断点、方法断点、改变变量值、重新调试、远程调试以及异常断点。 1、条件断点:条件断点允许我们在代码执行时设置特定条件,只有当条件满足时,程序...

    Eclipse王者归来——如何使用Eclipse调试Android源码

    【长青说安卓】系列专题(七):Eclipse王者归来——如何使用Eclipse调试Android源码 在Android开发领域,Eclipse曾是开发者的主要工具,尤其在早期,其强大的集成开发环境为开发者提供了便捷的代码编辑、构建和调试...

    NC eclipse 远程调试

    NC Eclipse 远程调试 NC Eclipse 远程调试是指在 Eclipse 集成开发环境中,使用 Java Debug Wire Protocol (JDWP) 实现远程调试 Java 应用程序的功能。JDWP 是一个基于 socket 的通信协议,用于在 debug 客户端和...

    Eclipse调试的7种方法

    以下将详细介绍标题提及的Eclipse调试的7种方法: 1. **条件断点**:普通断点是代码执行到某行时停止的基础,而条件断点则允许我们设置一个条件,只有当条件满足时,程序才会在该断点处暂停。这有助于减少不必要的...

    Eclipse调试常用技巧

    Eclipse是一款广泛使用的Java集成开发环境,其强大的调试功能对于开发者来说至关重要。本文将详细介绍Eclipse中的几个常用调试技巧,帮助提升开发效率。 1. **条件断点**:条件断点允许你设置一个断点,只有当特定...

    js eclipse 调试插件.

    总的来说,JavaScript Eclipse调试插件是提高JavaScript开发效率和质量的关键工具,通过它,开发者可以更好地理解代码运行状态,快速定位和解决问题,从而提升开发工作的专业性和生产力。对于任何使用Eclipse进行...

    Eclipse 调试 PHP

    在文件"1272237.html"和"1272237_files"中,可能包含有关如何使用Eclipse调试PHP的更具体步骤或示例代码。阅读这些文件将加深你对Eclipse调试PHP过程的理解,并能帮助你在实际开发中更好地应用这些技巧。 总的来说...

    在Eclipse中使用debug(Eclipse调试常用技巧)

    尽管图像内容无法直接查看,但是根据标题和描述,我们可以提取以下Eclipse调试的常用技巧: 1. 启动Debug模式:在Eclipse中,可以通过点击工具栏上的“Debug”图标或者右键点击Java文件选择“Debug As”来启动debug...

    Eclipse 的单步调试.docx

    Eclipse 的单步调试 Eclipse 的单步调试是指在 Eclipse 集成开发环境(IDE)中使用单步调试功能来 debug Java 程序。单步调试功能可以帮助开发者逐步执行程序,检查程序的执行结果,改变变量的值,检查代码段执行...

Global site tag (gtag.js) - Google Analytics