2013-08-19 17 views
5

podczas debugowania programu wielowątkowego java umieścić punkty przerwania. po uruchomieniu metody, która się powtarza, kontrola nie będzie działać menthod, proszę daj mi znać procedura debugowania.eclipse java program wielowątkowy debugowanie

przykładowy kod

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

Proszę bardziej sprecyzować lub podać kod. – GGrec

Odpowiedz

7

Debugger zaczyna się od głównego wątku, ponieważ Twój punkt przerwania jest w głównym wątku.
t.start() spawns nowy wątek.
Ale debugger będzie kontynuował główny wątek.

Jeśli chcesz debugować nowo utworzony wątek, musisz ustawić punkt przerwania również w metodzie run(). Następnie kontrolka debuggera przechodzi do nowo utworzonego wątku, ale jest niewidoczna dla użytkownika.

Jeśli chcesz zobaczyć kontrolę w run() metody nowo utworzonego wątku, to trzeba wykonać poniższe kroki -

  1. umieścić punkt przerwania w run() metody wraz ze sposobem main().
  2. Rozpocznij debugowanie programu do momentu znalezienia komunikatu t.start().
  3. Po ukończeniu t.start() przejdź do widoku "Debugowanie". Tam znajdziesz 2 wątki uruchomione. (Możesz znaleźć widok "Debugowanie" w czasie zaćmienia, przechodząc do "Okno -> Pokaż widok -> Debuguj").
    • Pierwszy to główny gwint
    • drugi jest nowo utworzone nitki wątku (na przykład [1])
  4. Click na drugi gwint widzieć kontrolę sposobu wykonywania.
  5. Po zakończeniu wykonywania wątku ponownie przejdź do widoku "Debug" i kliknij główny wątek, aby kontynuować debugowanie głównego wątku.

Uwaga: Jeśli nadal z głównym wątku po 3rd krok w kierunku zakończenia wątku, to nie będzie w stanie debugować nowy wątek.

Powiązane problemy