10

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

4

3 回答 3

10

James 的回答很好,我对此表示赞同,但我也会考虑尝试拆分程序的逻辑层和表示层。将 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/中简要提到了它。

于 2010-06-01T11:44:34.433 回答
7

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

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

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

于 2010-04-13T23:48:05.300 回答
0

使用 pyclewn

您可以将pyclewn与 vim 一起使用。或者使用pdb-clone,pyclewn的核心很好,和gdb一样,可以远程调试

于 2016-04-21T05:57:40.447 回答