JDB - 介绍

调试是一种发现并消除程序中的错误或缺陷并获得预期结果的技术过程。 调试包括测试和监控。 当程序的子单元紧密耦合时,情况会非常复杂。 我们可以使用遵循规定的 API 的调试器工具来调试程序。 调试器允许您单步执行代码的各个方面、检查所有元素并删除错误(如果有)。

调试技术

调试 Java 程序有多种技术。 旧的调试方法是在每个段的末尾使用打印语句,这将在控制台上打印跟踪语句。 看一下下面的代码。

pubic class Add
{
   public static void main(String ar[])
   {
      int a = ar[0];
      system.out.println("A : " + a);
      
      int b = ar[1];
      system.out.println("B : " + b);
      
      int c = a + b;
      system.out.println("C = a + b : " + c);
   }
}

这里,我们有一个程序将两个数字相加并打印输出。 请注意,在每个步骤中,我们都引入了一个打印语句,用于在控制台上打印程序的状态。 这是调试程序的传统方法。

此外,我们还有可用于调试程序的高级概念,例如:

  • 迈步
  • 断点,以及
  • 例外情况或观察点。

调试类型

我们可以使用多种方法调试程序:

  • 使用 Java 字节码(Java 代码的编译版本)
  • 在程序内使用注释
  • 将类附加到正在运行的程序
  • 远程调试
  • 按需调试
  • 优化代码调试

Java 调试器

以下是市场上可用的 Java 调试器的一些示例:

  • Eclipse、Netbeans 等 IDE 包含自己的调试器(Visual Cafe、Borland、JBuilder)
  • 独立调试器 GUI(例如 Jikes、Java 平台调试器和 JProbe)
  • 命令行调试器(Sun 的 JDB)
  • 记事本或 VI 驱动(堆栈跟踪)

本教程介绍如何使用命令行调试器jdb

JDB

Java 调试器 (JDB) 是 Java 类在命令行中调试程序的工具。 它实现了 Java 平台调试器架构。 它有助于使用 Java 调试接口 (JDI) 检测和修复 Java 程序中的错误。

JDK 中的 JDB

以下架构定义了JDB在JDK中的角色。 它主要包含三个单元:

  • Java 虚拟机工具接口 (JVM TI)
  • Java 调试接线池 (JDWP)
  • Java 调试器接口 (JDI)
JDB 架构

JVM TI

它是VM实现的原生编程接口。 它提供了检查和调试虚拟机上运行的应用程序状态的方法。 它允许实现者(VM Implementer)可以轻松地包含在调试架构中。 它还使用名为 JDWP 的第三方通道进行通信。

JDWP

它定义了在被调试进程和调试器前端之间传递的信息和请求的格式。 拥有 JDWP 的主要目的是允许调试对象和调试器在单独的虚拟机或单独的平台上运行时进行通信。

JDI

它是一个作为前端实现的高级 Java 接口。 它定义了用户代码级别的变量信息。 建议对所有调试器开发使用 JDI 层。 它使用 JDWP 与调试对象 JVM 进行通信。