Отладчик Perl — как выйти из цикла

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

Например:

line 1
for($i=1;$i<100000:$i++)
{
    line2
}
line3

Я хочу, чтобы отладчик вышел из этого цикла for и остановился на строке 3.


person AnonGeek    schedule 23.06.2012    source источник


Ответы (4)


c 5

Демонстрация:

>perl -d

Loading DB routines from perl5db.pl version 1.33
Editor support available.

Enter h or `h h' for help, or `perldoc perldebug' for more help.

print "line1\n";
for (1..100000) {
   print "line2\n";
}
print "line3\n";
^Z
main::(-:1):    print "line1\n";

  DB<1> s
line1
main::(-:2):    for (1..100000) {

  DB<1> s
main::(-:3):       print "line2\n";

  DB<1> s
line2
main::(-:3):       print "line2\n";

  DB<1> c 5
line2
line2
line2
...
line2
line2
line2
main::(-:5):    print "line3\n";

  DB<2> s
line3
Debugged program terminated.  Use q to quit or R to restart,
person ikegami    schedule 23.06.2012

Вы можете просто установить условие завершения цикла:

$i=100000

Разрабатывать? Просто установите переменную в условие выхода следующим образом:

  DB<5> $i=1

  DB<6> print $i
1
  DB<7> $i=100000

  DB<8> print $i
100000
  DB<9> c
Debugged program terminated.  Use q to quit or R to restart,
person stark    schedule 23.06.2012

c 3 означает продолжить выполнение и остановиться на строке 3

person Adrian Pronk    schedule 23.06.2012

Выхода нет. Вы можете либо установить точку останова на "строке 3" и продолжить "c" до следующей точки останова, либо явно указать c <line #> для остановки на определенной строке.

person Usman    schedule 23.06.2012