Используя отладчик и ругательства одновременно? - PullRequest
10 голосов
/ 07 февраля 2010

Я звоню python -m pdb myapp.py, когда срабатывает исключение, и я обычно возвращаюсь к интерпретатору pdb для изучения проблемы. Однако это исключение выдается после того, как я позвонил через curses.wrapper() и перешел в режим curses, что делает интерпретатор pdb бесполезным. Как я могу обойти это?

Ответы [ 3 ]

10 голосов
/ 01 июня 2010

Ответ Джеймса хороший, и я проголосовал за него, но я также рассмотрел бы попытку разделить уровни логики и представления моей программы. Держите проклятия частью тонкого слоя поверх библиотеки и напишите простой драйвер, который вызывает правильные процедуры для воссоздания ошибки. Тогда вы можете погрузиться и сделать то, что необходимо.

Другой способ, о котором я могу подумать, - это создать функцию с именем debug или что-то такое, что возвращает вас на обычный экран и вызывает pdb. Затем вставьте его перед кодом, вызывающим исключение, и запустите вашу программу. Что-то вроде

def debug(stdscr):
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    import pdb; pdb.set_trace()

Очевидно, это похоже на то, что делается с помощью функции curses.wrapper. Это кратко упоминается в http://www.amk.ca/python/howto/curses/.

7 голосов
/ 14 апреля 2010

Не будучи знакомым с Python, это может быть не совсем то, что вы хотите. Но, очевидно, winpdb может подключаться к скрипту - так же, как gdb - к запущенному процессу (IIUC).

http://winpdb.org/docs/launch-time/

Не вводите в заблуждение название, оно не зависит от платформы.

0 голосов
/ 21 апреля 2016

использовать pyclewn

вы можете использовать pyclewn с vim.или используйте pdb-clone, ядро ​​pyclewn его хорошо, это как gdb, может удаленная отладка

...