2011-03-02 2 views
24

В отладчике perl, если вы повторно перечисляете сегменты кода, которые убирают вас от текущей строки, вы можете вернуться к текущей строке, введя команду . (точка).Как перечислить текущую строку в PDB python?

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

Я что-то упустил?

ответ

12

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

+0

Я не думаю, что использовать «где», чтобы вернуться. Это меньше, чем идеал, но, конечно, лучше, чем ничего. Спасибо! – zenzic

7

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

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

+0

IPDB Удивительно, но это не имеет отношения к вопросу – ospider

25

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

alias ll u;;d;;l 

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

+0

Простой и работала для меня, это должно быть отмечено как ответ! – trinth

+1

Эта команда очень удобна. Чтобы сэкономить время, вы можете добавить это в файл '.pdbrc', поэтому вам не нужно вводить его каждый раз (описано здесь [здесь] (https://docs.python.org/3/library/pdb.html#debugger-commands)) –

+0

даже 'alias. u ;; d ;; l' works ;-) – kxr