Как вывести текущую строку в Python PDB?

В отладчике Perl, если вы неоднократно перечисляете сегменты кода, уводящие вас от текущей строки, вы можете вернуться к текущей строке, введя команду . (точка).

Я не смог найти ничего похожего с помощью модуля python PDB. Если я перечисляю себя вне текущей строки и хочу просмотреть ее снова, похоже, мне нужно либо запомнить номер строки, которая выполнялась в данный момент (маловероятно для меня), либо выполнить оператор (часто нежелательно) .

Я что-то упускаю?


person zenzic    schedule 02.03.2011    source источник


Ответы (5)


Поздно, но, надеюсь, все еще полезно. Сделайте следующий псевдоним:

alias ll u;;d;;l

Затем всякий раз, когда вы вводите ll, pdb будет перечислять с текущей позиции. Он работает, поднимаясь по стеку, а затем спускаясь по стеку, что сбрасывает 'l' для отображения с текущей позиции. (Это не сработает, если вы находитесь в верхней части трассировки стека.)

Совет. Постоянный псевдоним

Чтобы сделать псевдоним постоянным, добавьте строку в свой .pdbrc-файл в домашнем каталоге пользователя (~/.pdbrc). Это работает как с pdb, так и с ipdb.

person Ghopper21    schedule 07.08.2012
comment
Просто и сработало для меня. Это должно быть помечено как ответ! - person trinth; 20.03.2014
comment
Эта команда очень удобна. Чтобы сэкономить время, вы можете добавить это в файл .pdbrc, чтобы вам не приходилось вводить его каждый раз (описано здесь) - person Cabbage soup; 17.11.2016
comment
Я не мог сделать следующее, чтобы перезаписать alias l => alias l u;;d;;l, который входит в цикл - person alper; 15.07.2020

В Python 3.2 и выше вы можете использовать list . для сброса местоположения списка.

Источник: система отслеживания ошибок Python №4179

person CoupleWavyLines    schedule 14.04.2014
comment
Спасибо, очень хелппул. +1 - person Sabuncu; 24.04.2016
comment
или сокращенно: l. - person Kossak; 30.07.2019

Ну, я не думаю, что в отладчике Perl есть команда, подобная ., но вы всегда можете найти текущую строку, используя команду where / w. Это покажет вам как текущий (контекстный) кадр, так и самый последний кадр, который, как я полагаю, является местом запуска отладчика.

person kojiro    schedule 02.03.2011
comment
Я не думал использовать where', чтобы вернуться. Это далеко не идеально, но определенно лучше, чем ничего. Спасибо! - person zenzic; 02.03.2011

Этому вопросу уже 7 лет..

Если кому-то интересна эта проблема, ставьте точку

(pdb) l .

Теперь это работает.

person plhn    schedule 17.09.2018

Возможно, вам стоит попробовать ipython или ipdb, оболочка для pdb.

ipdb дает вам пронумерованные строки, цветной синтаксис, завершение табуляции и многое другое.

person hobbes3    schedule 02.04.2012
comment
ipdb потрясающий, но он не имеет отношения к вопросу - person ospider; 19.07.2017
comment
@ospider Я думаю, что этот ответ актуален, хотя он не отвечает на точный вопрос. Вполне вероятно, что это будет хорошим решением основной проблемы и хорошей дополнительной информацией по этому вопросу. - person NeilG; 18.11.2019