同时使用调试器和curses?

Mat*_*ner 10 python curses interpreter exception pdb

我正在调用python -m pdb myapp.py,当异常触发时,我通常会被抛回到pdb解释器来调查问题.但是,在我调用curses.wrapper()并进入curses模式后抛出此异常,导致pdb解释器无效.我该如何解决这个问题?

Nou*_*him 10

詹姆斯的答案是好的,我赞成了它,但我也考虑尝试分割我的程序的逻辑和表示层.将curses部分保留在库的顶部,并编写一个简单的驱动程序,调用正确的例程来重新创建错误.然后你可以潜入并做必要的事情.

我能想到的另一种方法是创建一个叫做的函数debug或者让你重新回到常规屏幕并调用pdb的东西.然后在引发异常的代码之前粘贴它并运行程序.就像是

def debug(stdscr):
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

显然,这与curses.wrapper功能相似.它在http://www.amk.ca/python/howto/curses/上简要提到过.


Jam*_*ris 7

不熟悉Python,这可能不是你想要的.但显然,winpdb可以附加到脚本 - 就像gdb可以连接到正在运行的进程(IIUC).

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

不要被名称误导,它与平台无关.