2010-11-01 3 views
9

Для некоторых текущих проектов я работаю с несколькими структурами данных, которые довольно большие (в области 10K элементов). Чтобы иметь доступ к этим данным в списках, мне нужно использовать циклы и итераторы, что может быть больно, когда проблемная область находится во второй половине списка.Отладочные петли

Поэтому я нахожу, что трачу много времени пальцем на кнопку F8 в отладчике Eclipse, чтобы пропустить каждый элемент цикла итерации. Это ухудшается, когда приходится несколько раз проходить через этот конкретный раздел, чтобы понять, почему код реагирует определенным образом.

Если у вас есть общее представление о том, сколько раз цикл должен выполняться до того, как попадет проблемная область, существует ли способ установить точку останова цикла для выполнения до этой точки, а затем приостановить?

ответ

15

Использовать условные точки останова.

http://wiki.eclipse.org/FAQ_How_do_I_set_a_conditional_breakpoint%3F

+0

Похоже, это именно то, что мне нужно. Благодаря! – Jason

+0

Не могли бы вы отметить это как «принятое»? – thejh

+0

сделано. оказывается, вы не можете принять ответ до 10 минут после его запроса. – Jason

3

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

if (loopIndex == 1000) { 
    int number = 14;   //Break here 
} 
+0

Это в значительной степени то, что я изначально рассматривал как решение, но просто хотел узнать, есть ли лучший ответ – Jason

0

Используя это в качестве примера:

for(int i=0;i<10000;i++){ 
    System.out.println(i); 
} 

Установить точку останова на печать линии, а затем щелкните правой кнопкой мыши на ней и выберите Breakpoint Properties.... Отсюда вы можете установить условие для запуска точки останова. Это похоже на условное выражение, которое вы бы указали в if-statement. Если вы хотите вызвать точку останова, когда я равен 6000, установите флажок Conditional и попробуйте: enter image description here

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