Могу ли я получить вывод pdb отладчика Python с помощью Color? - PullRequest
13 голосов
/ 15 августа 2010

Я часто использую PDB, и было бы еще лучше, если бы я мог добавить подсветку systax цветом.

В идеале, я бы хотел, чтобы путь к коду был более светлым. Строка фактического кода будет выделена синтаксисом.

Я использую OS X и приложение Terminal. Python 2.7

Ответы [ 5 ]

23 голосов
/ 15 августа 2010

pdb не поддерживает раскрашивание. Тем не менее, это не так сложно получить, даже если вы являетесь наркоманом командной строки (как я ;-) - вам не нужно переключаться на GUI / IDE только для того, чтобы получить раскрашивание во время отладки Python. В частности, инструменты командной строки обычно работают на намного лучше, когда вы обращаетесь к удаленному компьютеру через SSH, сохраняя при этом большую часть проблем с пропускной способностью и задержкой, которые может причинить вам любой удаленный доступ к GUI и IDE; -.)

В частности, для задачи, о которой вы спрашиваете, рассмотрите ipdb (вам также нужен ipython , который предлагает гораздо более продвинутую оболочку, чем простой интерактивный Python, на котором ipdb полагается) Оба предлагают хорошее завершение табуляции, улучшенные трассировки, и раскраска - ipython для вашей обычной интерактивной работы, ipdb с теми же функциями при отладке (в остальном примерно так же, как * 1015) *).

9 голосов
/ 03 апреля 2012

Вы можете попробовать pudb , который работает в терминале и выглядит так:

pudb screenshot

Я не пробовал некоторые из опций, упомянутых вдругие ответы, но, судя по страницам PyPI, pudb лучше поддерживается и лучше документирован.

3 голосов
/ 16 августа 2010

Взгляните на pdb ++ - это замена для pdb, которая отвечает всем вашим требованиям и добавляет некоторые другие полезные функции, такие как завершение табуляции и новые команды, такие как watch и sticky.

1 голос
/ 17 февраля 2011

На случай, если кто-нибудь столкнется с проблемой окраски в консоли.

У моей консоли был белый фон, в то время как ipdb также добавлял в синтаксис довольно светлые цвета (например, переменные были белыми). Нажатие man ipython показывает, что у нас есть 3 доступных цвета: 'nocolor', 'linux', 'LightBG'. Ipdb в моем случае был установлен через easy_install в моем virtualenv. Таким образом, было легко найти исходный код ipdb и изменить его (подсказка для поиска ipdb / init .py в вашем env) Тогда я изменил следующее:

def set_trace():
    ip = ipapi.get()
    + def_colors = ip.options.colors
    + def_colors = 'LightBG'
    Pdb(def_colors).set_trace(sys._getframe().f_back)

Это своего рода хакерское решение, но оно хорошо для отладки на моей рабочей станции, так что его достаточно. Но если кто-нибудь найдет что-нибудь получше. Пожалуйста, пришлите мне сообщение, что делать.

0 голосов
/ 15 августа 2010

Это может оказаться невозможным для вас, но вы пытались использовать графический отладчик (как в eclipse / pydev )? Это даст вам подсветку синтаксиса и многое другое.

Я использую pdb напрямую, только если у меня нет выбора, потому что графический интерфейс намного лучше.

...