我正在调用python -m pdb myapp.py
,当异常触发时,我通常会被抛回pdb解释器来调查问题。但是,在我通过curses.wrapper()
调用并进入curses模式后,抛出此异常,导致pdb解释器无效。我该如何解决这个问题?
答案 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一样,可以远程调试