2013-10-07 2 views
6

Предположим, у меня есть следующий код. Во время отладки я хочу, чтобы Eclipse остановился, когда он выполнил 1 миллион итераций. Как это сделать? Я не могу вручную делать 1 миллион раз.Точка останова в цикле после большого количества итераций в Eclipse

for(int i = 0; i < 10000000; i++) { 
    //some code 
} 
+1

Я могу положить if (i == 1000000) внутри цикла и сломаться там. Есть ли способ сделать это без изменения кода? – codepk

ответ

10

Вы можете поставить условную точку останова в затмении:

  1. Помещенный точки останова
  2. Правые> Свойства Нажать на
  3. Включить опцию "condition"
  4. Put код условия

    я == 1000000

+1

Это удобный трюк. я не знал об этом – sukhvir

+0

И как насчет того, когда у вас нет переменной, чтобы проверить ее значение? Например, когда вы читаете строки из файла Scanner с 'while (fileScanner.hasNext())'? Как вы останавливаетесь после того, как прочитано определенное количество строк? – Floella

2

В этом случае необходимо выполнить следующие действия:

for(int i = 0; i < 10000000; i++) 
{ 
    if(i==1000000){ 
     // do nothing .... 
     // this is just a dummy place to make eclipse stop after million iterations 
     // just put a break point here and run the code until it reaches this breakpoint 
     // remove this if condition from your code after you have debugged your problem 
    } 

    //your code 
} 
1

Я знаю, что я necroing, но я, отвечая на вопрос от @Anarelle на the currently accepted answer об остановке, когда никакая переменная не доступна. Это также отвечает на исходный вопрос. В окне условного прерывания Eclipse (в Debug Perspective) вы можете установить флажок рядом с Число попаданий: и просто дать несколько раз, чтобы точка останова была «тронута», прежде чем она приостанавливает выполнение. Обратите внимание, что это не только работает за пределами циклов (например, отладка паузы только после того, как я пробовал это действие 3 раза), но также учитывает внешние петли. Например, в следующем коде, i будет 6 и j не 3, когда достигает точки останова, если мой счетчик хит 20:

for (int i = 0; i < 100; i++) { 
    System.out.println(i); 
    for (int j = 2; j < 5; j++) { 
     System.out.println(j); 
    } 
} 

После того, как контрольная точка была поражена, она будет отключена, пока вновь включен пользователем. Другими словами, эту функцию можно также использовать для проверки каждые 20 раз, когда ударяется конкретная точка останова, если она снова включается.

+0

Спасибо за редактирование - я обычно не использую Debug Perspective самостоятельно, поэтому я часто забываю, что большинство пользователей не будут видеть эти вещи в своем обычном виде. – tcmarsh

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