Показывать контекст после каждого перемещения с использованием Python pdb

341
Lorem Ipsum

Могу ли я показывать контекст всякий раз, когда я прохожу код, используя pdbотладчик Python, без необходимости явного вызова команды 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?

0

1 ответ на вопрос

0
Lorem Ipsum

Это можно сделать, создав .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?