Загрузка основного модуля Pdb и Python при вызове set_trace(): возможно?

В последнее время я обнаружил, что использую PDB намного чаще, чем обычно. У меня есть мой красивый ярлык, который быстро добавляет import pdb; pdb.set_trace() в нужное мне место в коде. Теперь каждый раз, когда я нахожусь в pdb, я хочу, чтобы эмулированная интерактивная консоль находилась в модуле кода Python, чтобы избежать использования только однострочников при отладке.

Это требует ввода !import code; code.interact(local=vars()) каждый раз, и это очень раздражает, так как я должен держать его готовым для копирования и вставки или вводить его вручную.

Есть ли способ загрузить его каждый раз, когда вызывается set_trace()? Спасибо всем


person Samuele Mattiuzzo    schedule 05.04.2013    source источник
comment
Разве он не загружает локальное пространство имен, когда вы устанавливаете трассировку? Или я что-то пропустил :О   -  person msvalkon    schedule 05.04.2013
comment
Мне нужно, чтобы у него была эмулированная консоль интерпретатора Python с многострочной поддержкой. Жить только на одной линии в pdb вредно :(   -  person Samuele Mattiuzzo    schedule 05.04.2013
comment
О да! Я подумал, что не совсем понимаю, что происходит.   -  person msvalkon    schedule 05.04.2013
comment
Каждый раз? При отладке мне очень редко нужно что-то, кроме однострочников. Особенно сейчас с dict и set comprehensions.   -  person Lennart Regebro    schedule 05.04.2013
comment
@LennartRegebro молодец.   -  person Samuele Mattiuzzo    schedule 05.04.2013
comment
Что ж, отладка — это самоанализ. Вам нужно писать функции или классы при отладке? Конечно, бывает, но каждый раз?   -  person Lennart Regebro    schedule 05.04.2013
comment
Так как, видимо, для вас это является принципиальным в моем вопросе, я его отредактировал. Дело не в том, что каждый раз мне нужна такая сложность. Я просто хочу этого, и, поскольку я не смог найти ничего об этом в Интернете, я спросил здесь. Теперь лучше?   -  person Samuele Mattiuzzo    schedule 05.04.2013


Ответы (1)


Почему бы не просто import code; code.interact(local=vars()) вместо import pdb; pdb.set_trace()?

person Lennart Regebro    schedule 05.04.2013