Как я могу пропустить цикл с помощью pdb.set_trace()
?
Например,
pdb.set_trace()
for i in range(5):
print(i)
print('Done!')
pdb
подсказки перед циклом. Я ввожу команду. Возвращаются все значения от 1 до 5, и я хотел бы снова получить запрос pdb
перед выполнением print('Done!')
.
n
, а затем введитеuntil
. Это будет продолжаться до тех пор, пока не будет превышена хотя бы текущая строка.f
R,debug
которая «завершает выполнение текущего цикла или функции» ( adv-r.hadley.nz/debugging.html )?until
(или его краткой формыunt
) без аргументов всегда будет идти вниз по строке (если вы не нажмете оператор return), поэтому вы также можете просто использовать его несколько раз вместоn
.breakpoint()
установленным в петле входомpython 3
.VB Editor
Может принимать контрольные точки «на лету», но это, скорее всего , не в случае сpdb
.Вы должны установить точку останова после цикла («break main.py:4», предполагая, что приведенные выше строки находятся в файле с именем main.py), а затем продолжить («c»).
источник
В ссылке, упомянутой в принятом ответе ( https://pymotw.com/3/pdb/ ), я нашел этот раздел несколько более полезным:
Вот пример того, как это может работать re: loops:
Это избавляет вас от двух вещей: необходимости создавать дополнительные точки останова и необходимости переходить к концу цикла (особенно если вы, возможно, уже выполнили итерацию, так что вы не сможете сделать это без повторного запуска отладчика).
Вот документы Python
until
. Кстати, я используюpdb++
как добавку для стандартного отладчика (отсюда и форматирование), ноuntil
в обоих случаях работает одинаково.источник
Вы можете установить другую точку останова после цикла и перейти к ней (при отладке) с помощью
c
:источник
Если я правильно понял.
Один из возможных способов сделать это:
Как только вы получите
pdb
подсказку. Просто нажмитеn
(следующий) 10 раз, чтобы выйти из цикла.Однако я не знаю, как выйти из цикла
pdb
.Однако вы можете использовать
r
для выхода из функции.источник