2013-08-19 2 views
5

при отладке java-программы многопоточности i поставил контрольные точки. после того, как метод start вызывается, элемент управления не собирается запускать menthod, можете ли вы сообщить мне процедуру отладки.eclipse java многопоточная отладка программы

образца код

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

Debugger начинается с основным потоком, так как ваша точка останова в главном потоке.
t.start() порождает новую нить.
Но отладчик продолжит сам основной поток.

Если вы хотите отлаживать вновь созданный поток, вам также нужно установить точку останова в методе run(). Затем элемент управления отладчиком переходит к вновь созданному потоку, но он невидим для пользователя.

Если вы хотите, чтобы увидеть контроль в run() метод вновь созданного потока, то вы должны выполнить следующие шаги -

  1. Поместите контрольную точку в run() метод наряду с методом main().
  2. Начните отладку программы, пока не получите сообщение t.start().
  3. По завершении t.start() перейдите к разделу «Отладка». Там вы найдете 2 потока. (Вы можете найти представление «Отладка» в eclipse, перейдя в «Окно -> Показать вид -> Отладка»).
    • Первый из них является основной поток
    • второй вновь создаваемых потоков (например, [Thread-1])
  4. Нажмите на вторую нить, чтобы увидеть контроль в способе выполнения.
  5. После завершения выполнения потока перейдите к «Debug» и снова нажмите на основной поток, чтобы продолжить отладку основного потока.

Примечание: Если вы по-прежнему с основным потоком после 3-го шага к концу нити, то вы не сможете отлаживать новую нить.

 Смежные вопросы

  • Нет связанных вопросов^_^