2013-08-19 118 views
5

Javaマルチスレッドプログラムをデバッグしているときにブレークポイントを入れます。起動メソッドが起動した後に、コントロールがmenthodを実行する予定ではありません。私にデバッグ手順を教えてください。Eclipseマルチスレッドプログラムのデバッグ

サンプルコード

class Test extends Thread { 
    public static void main(String[] args) { 
     try { 
      Thread t = new Thread(new Test()); 
      t.start(); 
      t.start(); 
     } catch (Exception e) { 
      System.out.print("e "); 
     } 
    } 

    public void run() { 
     for(int i = 0; i < 2; i++) 
      System.out.print(Thread.currentThread().getName() + " "); 
    } 
} 
+0

明示的にするか、コードを入力してください。 – GGrec

答えて

7

あなたのブレークポイントは、メインスレッドであるため、デバッガは、メインスレッドで始まります。
t.start()は新しいスレッドを生成します。
しかし、デバッガはメインスレッド自体を続行します。

新しく作成したスレッドをデバッグする場合は、run()メソッドでもブレークポイントを設定する必要があります。次に、デバッガの制御は新しく作成されたスレッドに移動しますが、ユーザーは見えません。

あなたが新たに作成されたスレッドのrun()方法でコントロールを表示したい場合、あなたは、以下の手順に従わなければならない -

  1. main()方法とともにrun()方法でブレークポイントを置きます。
  2. t.start()という文が表示されるまで、プログラムのデバッグを開始します。
  3. t.start()が完了したら、「デバッグ」ビューに進みます。 2つのスレッドが実行されています( "Debug"ビューは "Window - > Show View - > Debug"にあります)。
    • 一つ目はメインスレッドを実行する方法でコントロールを参照するための第2のスレッドに
    • 第1新しく作成されたスレッド(例えば[スレッド-1])
  4. クリックです。
  5. スレッドの実行が完了したら、「デバッグ」ビューに再度アクセスし、メインスレッドをクリックしてメインスレッドのデバッグを続行します。

注:あなたがスレッドの終わりに向かって第三工程の後にメインスレッドを続行する場合は、新しいスレッドをデバッグすることはできません。

関連する問題