同时使用调试器和诅咒?
Posted
技术标签:
【中文标题】同时使用调试器和诅咒?【英文标题】:Using a debugger and curses at the same time? 【发布时间】:2011-01-14 02:21:04 【问题描述】:我正在调用python -m pdb myapp.py
,当异常触发时,我通常会被退回到 pdb 解释器来调查问题。但是,在我通过curses.wrapper()
调用并进入curses 模式后,会引发此异常,从而使pdb 解释器无用。我该如何解决这个问题?
【问题讨论】:
我认为可能会有有用的信息wiki.python.org/moin/PythonDebuggers 我被这个标题逗笑了。是的,调试和诅咒似乎在我的脑海中并存。 【参考方案1】:使用 pyclewn
你可以在 vim 中使用pyclewn。 或者使用 pdb-clone,pyclewn 的核心 不错,和gdb一样,可以远程调试
【讨论】:
根据该链接不再支持 Pyclewn。【参考方案2】: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/ 有简要提及。
【讨论】:
保持curses逻辑分离的明智建议,感谢curses.wrapper
指针。【参考方案3】:
不熟悉 Python,这可能不是您想要的。但显然,winpdb 可以附加到脚本 - 就像 gdb 可以附加到正在运行的进程 (IIUC)。
http://winpdb.org/docs/launch-time/
不要被名称误导,它是独立于平台的。
【讨论】:
好建议。你打败了我。这将是解决这个问题的正确方法。对于 GUI 和守护进程也很有用。 我不认为可以使用核心库的 pdb 进行附加? 我不这么认为。您需要在“客户端”和“服务器”上使用 winpdb。以上是关于同时使用调试器和诅咒?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 UIAutomation、模拟器和 Xcode 调试器同时运行?
chrome浏览器页面调试console关闭了,怎么让chrome页面调试时同时展开console和sources两个窗口