JDB-はじめに

デバッグは、プログラムのバグや欠陥を見つけて削除し、期待される結果を得るための技術的な手順です。デバッグには、テストと監視が含まれます。プログラムのサブユニットが緊密に結合されている場合、それは非常に複雑です。規定のAPIに準拠したデバッガツールを使用してプログラムをデバッグできます。デバッガーを使用すると、コードのあらゆる側面をステップスルーし、すべての要素を検査し、エラーがある場合はそれを削除できます。

デバッグ手法

Javaプログラムをデバッグするためのさまざまな種類の手法があります。デバッグの古い方法は、コンソールにトレースステートメントを出力するすべてのセグメントの最後にprintステートメントを使用することです。次のコードを見てください。

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);
   }
}

ここに、2つの数値を加算して出力を出力するプログラムがあります。各ステップで、プログラムの状態をコンソールに出力するprintステートメントが導入されていることに注意してください。これは、プログラムをデバッグするための従来のアプローチです。

さらに、次のようなプログラムのデバッグに使用できる高度な概念があります。

  • stepping
  • ブレークポイント、および
  • 例外またはウォッチポイント。

デバッグの種類

さまざまな方法を使用してプログラムをデバッグできます。

  • Javaバイトコードの使用(Javaコードのコンパイル済みバージョン)
  • プログラム内のコメントの使用
  • 実行中のプログラムへのクラスのアタッチ
  • リモートデバッグ
  • オンデマンドでのデバッグ
  • 最適化されたコードのデバッグ

Javaデバッガー

市場で入手可能なJavaデバッガーの例を次に示します。

  • Eclipse、NetbeansなどのIDEには、独自のデバッガが含まれています(Visual cafe、Borland、JBuilder)
  • スタンドアロンデバッガGUI(Jikes、Javaプラットフォームデバッガ、JProbeなど)
  • コマンドラインデバッガー(SunのJDB)
  • メモ帳またはVI駆動(スタックトレース)

このチュートリアルでは、コマンドラインデバッガーの使用方法について説明します。 jdb

JDB

Javaデバッガー(JDB)は、Javaクラスがコマンドラインでプログラムをデバッグするためのツールです。これは、Java Platform DebuggerArchitectureを実装します。これは、Java Debug Interface(JDI)を使用してJavaプログラムのバグを検出して修正するのに役立ちます。

JDKのJDB

次のアーキテクチャは、JDKにおけるJDBの役割を定義します。主に3つのユニットが含まれています。

  • Java仮想マシンツールインターフェイス(JVM TI)
  • Javaデバッグ配線プール(JDWP)
  • Javaデバッガインターフェイス(JDI)

JVM TI

これは、VMによって実装されるネイティブプログラミングインターフェイスです。これは、VMで実行されているアプリケーションの状態を検査およびデバッグする方法を提供します。これにより、デバッグアーキテクチャに簡単に組み込むことができる実装者(VM実装者)が可能になります。また、と呼ばれるサードパーティのチャネルを使用しますJDWP コミュニケーションのため。

JDWP

これは、debuggeeプロセスとデバッガーフロントエンドの間で受け渡される情報と要求の形式を定義します。JDWPを使用する主な目的は、デバッグ対象とデバッガーが別々のVMまたは別々のプラットフォームで実行されているときに通信できるようにすることです。

JDI

これは、フロントエンドとして実装された高レベルのJavaインターフェースです。ユーザーコードレベルで変数情報を定義します。すべてのデバッガー開発には、JDIレイヤーを使用することをお勧めします。デバッグ対象のJVMとの通信にJDWPを使用します。