同时使用调试器和诅咒?

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 调试器同时运行?

同时调试python和Java

启动 Python 调试器,同时将模块作为脚本执行

本地调试同时使用本地mock数据和线上数据

chrome浏览器页面调试console关闭了,怎么让chrome页面调试时同时展开console和sources两个窗口

如何在 vscode 中同时运行两个 pwa-msedge 调试器?