Используя отладчик и проклятия одновременно?

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

10
задан Martijn Pieters 30 March 2015 в 10:42
поделиться

2 ответа

Джеймс `ответ хороший, и я проголосовал за него, но я бы также подумал о том, чтобы попытаться разделить уровни логики и представления моей программы. Держите часть 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/ .

10
ответ дан 3 December 2019 в 21:21
поделиться

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

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

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

7
ответ дан 3 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: