Нет, отладчик не откроется автоматически вследствие установки точки останова.
Итак, вы сначала установили точку останова (или несколько из них) , а затем вручную запустите отладчик .
После этого отладчик выполнит ваш код как обычно, но * прекратит выполнение инструкций, когда достигнет точки останова - инструкция всама точка останова не будет выполнять .Он остановится непосредственно перед , что даст вам возможность выполнить некоторые задачи отладки, например
- проверка значений переменных,
- установить переменные вручную на другие значения ,
- продолжить выполнять инструкции шаг за шагом (то есть только в следующеминструкция ),
- продолжить выполнение инструкций до следующей точки останова ,
- преждевременно прекратить отладку вашей программы.
Это общий сценарий для всех отладчиков всех языков программирования (и их IDE).
Для IDE запуск отладчика будет
- включить или показать инструкции по отладке в их системе меню,
- отобразить для них панель инструментов и
- активировать для них горячие клавиши.
Без установки хотя бы одной точки останова, большинство отладчиков выполняют всю программу без паузы (как запуск безотладчик), поэтому у вас не будет возможности выполнить какую-либо задачу отладки.
(Некоторые IDE имеют возможность запустить отладчик в «сначала инструкция, затем пауза» mode, поэтому вам не нужно заранее устанавливать точки останова в этом случае.)
Да, встроенная функция breakpoint()
(введенная в Python 3.7) прекращает выполнение вашейпрограмма входит в режим отладки, и вы можете использовать раскрывающееся меню отладчика Spyder.
(Это не отладчик Spyders , только его раскрывающийся списокменю ;используемый отладчик по-прежнему будет pdb
, то есть по умолчанию P ython D e B ugger.)
Соединение междуВстроенная функция breakpoint()
и функция breakpointhook()
(из встроенного модуля sys
) очень просты - первый напрямую вызывает второй.
Естественный вопрос - , почему нам нужны две функции с одинаковым поведением?
Ответ в design - функция breakpoint()
может быть изменена косвенно , изменяя поведение функции breakpointhook()
.
Например, создатели IDE могут изменить поведение функции breakpointhook()
, чтобы она запускала свой собственный отладчик , а не pdb
один.