2013-08-19 10 views
5

durante il debug del programma multithreading java inserisco i breakpoint. dopo che il metodo di avvio sta invocando il controllo non verrà eseguito menthod puoi per favore fammi sapere la procedura di debug.eclipse java multithread debugging del programma

codice di esempio

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

Si prega di essere più esplicito o fornire un codice. – GGrec

risposta

7

Debugger inizia con thread principale, dal momento che il punto di interruzione è in thread principale.
t.start() genera una nuova discussione.
Ma il debugger continuerà con il thread principale stesso.

Se si desidera eseguire il debug del thread appena creato, è necessario impostare anche un punto di interruzione nel metodo run(). Quindi il controllo del debugger passa al thread appena creato, ma non è visibile all'utente.

Se volete vedere il controllo in run() metodo di filo appena creato, quindi è necessario seguire la seguente procedura -

  1. mettere un punto di interruzione in run() metodo con il metodo main().
  2. Avviare il debug del programma finché non si preme la dichiarazione t.start().
  3. Dopo aver completato t.start(), passare alla vista "Debug". Lì troverai 2 thread in esecuzione. (Puoi trovare la vista "Debug" in eclissi andando su "Finestra -> Mostra vista -> Debug").
    • primo è thread principale
    • filo secondo è appena creato (ad esempio [Thread-1])
  4. clic sul secondo filo per visualizzare il controllo di metodo run.
  5. Dopo il completamento dell'esecuzione del thread, andare di nuovo alla vista "Debug" e fare clic sul thread principale per continuare con il debug del thread principale.

Nota: Se si continua con il thread principale dopo il 3 passo verso la fine del filo, allora non essere in grado di eseguire il debug del nuovo thread.

Problemi correlati