Используя отладчик и curses одновременно?
-
19-09-2019 - |
Вопрос
Я звоню python -m pdb myapp.py
, когда возникает исключение, и я обычно возвращаюсь к интерпретатору pdb для изучения проблемы.Однако это исключение генерируется после того, как я вызвал через curses.wrapper()
и перешел в режим проклятий, сделав интерпретатор pdb бесполезным.Как я могу обойти это?
Решение
Ответ Джеймса хороший, и я поддержал его, но я бы также подумал о попытке разделить уровни логики и представления моей программы.Сохраните часть curses тонким слоем поверх библиотеки и напишите простой драйвер, который вызывает правильные процедуры для воссоздания ошибки.Затем вы можете погрузиться и сделать то, что необходимо.
Другой способ, который я могу придумать, - это создать функцию, вызываемую 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/.
Другие советы
Не будучи знакомым с Python, это может быть не совсем то, что вы хотите.Но, по-видимому, winpdb может подключаться к скрипту - точно так же, как gdb может подключаться к запущенному процессу (IIUC).
http://winpdb.org/docs/launch-time/
Пусть название не вводит вас в заблуждение, оно не зависит от платформы.
используйте pyclewn
вы можете использовать пайклунн с vim.или используйте pdb-clone, ядро pyclewn он хорош, похож на gdb, может выполнять удаленную отладку