Могу ли я показывать контекст всякий раз, когда я прохожу код, используя отладчик Python pdb без необходимости явного вызова команды list?

Я пробовал связывать команды с чем-то вроде n & l или n && l или nl или n + l или n; l Я не могу найти никаких документов по этому поводу.

Проблема в том, что каждый раз, когда я перебираю код, я в итоге набираю n RET а затем либо l RET либо l l RET ... каждые ... один раз, чтобы увидеть какой-то контекст.

Руководство Стива Ферга точно описывает предполагаемый рабочий процесс pdb :

Так что типичное взаимодействие с pdb может выглядеть так

  • Обнаружен оператор pdb.set_trace(), и вы начинаете трассировку с приглашением (Pdb)
  • Вы нажимаете «n» и затем ENTER, чтобы начать пошаговое выполнение кода.
  • Вы просто нажимаете ENTER, чтобы повторить шаг.
  • Вы просто нажимаете ENTER, чтобы повторить шаг.
  • Вы просто нажимаете ENTER, чтобы повторить шаг. и тд и тп
  • В конце концов, вы понимаете, что вы немного растеряны. Вы не совсем уверены, где вы находитесь в своей программе больше. Так…
  • Вы нажимаете «l» и затем ENTER. Здесь перечислены области вашей программы, которая в данный момент выполняется.
  • Вы осматриваете дисплей, получаете ваши ориентиры и готовы начать снова. Так….
  • Вы нажимаете «n» и затем ENTER, чтобы начать пошаговое выполнение кода.
  • Вы просто нажимаете ENTER, чтобы повторить шаг.
  • Вы просто нажимаете ENTER, чтобы повторить шаг. и тд и тп

Мне кажется очевидным, что показ контекста после каждого хода будет полезен и желателен для пользователя. Однако, поскольку кажется, что сделать это не так просто, я думаю, что я неправильно использую pdb . Может быть, моя постоянная потребность видеть контекст является признаком неправильного использования? Но как еще я бы использовал pdb?

1 ответ1

0

Это можно сделать, создав файл .pdbrc и используя команду alias .

В вашем файле .pdbrc положить,

alias n next ;; l
alias s step ;; l

Затем, когда вы нажимаете n , команда next ;; l буду выдан вместо и аналогично для s . Двойные двоеточия разделяют команды так, что вы нажимаете следующую кнопку next RET l RET .

Вы можете прочитать больше о команде alias и других в документации pdb.

Имейте в виду, что получение pdb для чтения файла .pdbrc в Windows немного хлопотно . pdb ищет системную переменную HOME которая по умолчанию недоступна в Windows. Вам придется вручную создать системную переменную HOME и поместить в нее папку, содержащую .pdcrc . Я подробно описал, как это сделать, в другом ответе: Как я могу определить .pdbrc на компьютере с Windows?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .