同时使用调试器和curses?

时间:2010-02-07 14:51:48

标签: python exception interpreter curses pdb

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

3 个答案:

答案 0 :(得分:10)

詹姆斯的答案是好的,我赞成它,但我也考虑尝试分割我的程序的逻辑和表示层。将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/简要提到了它。

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:0)

使用pyclewn

您可以将pyclewn与vim一起使用。 或者使用pdb-clone,pyclewn的核心 它的优点,就像gdb一样,可以远程调试