如何使用pdb正确调试python3.3 curses应用程序?

时间:2013-12-24 12:52:26

标签: python debugging python-3.3 curses

使用pdb调试curses应用程序时,交互式调试器无用,因为curses会弄乱终端屏幕。虽然调试后验证工作,但这有点限制。

所以我们可能需要的是让调试器在调试对象(正在调试的应用程序)中与终端分开工作。 一些应用远程调试的替代方法(例如xpdb)似乎不适用于python 3.3或出于其他原因而出现奇怪的错误。

那么如何在不同的终端或其他正确的方式中使用pdb

2 个答案:

答案 0 :(得分:0)

使用一些调试器的功能来附加到正在运行的进程。例如,您可以尝试:

gdb python <pid>

请参阅Python Wiki DebuggingWithGdb

是您要调试的进程的pid。还有WinPdb允许您连接到远程或本地进程。 WinPdb有很好的文档,我认为这是你最好的选择。

答案 1 :(得分:0)

我发现Python文档中的这些建议有助于:

  

调试curses应用程序时的一个常见问题是获取   当应用程序死亡而没有恢复时,终端搞砸了   终端到以前的状态。在Python中,这通常发生在   你的代码是错误的,并引发一个未被捕获的异常。钥匙不是   例如,当你输入它时,它会更长时间回显到屏幕上   使得使用shell变得困难。在Python中你可以避免这些   通过导入模块,复杂性和调试变得更加容易   curses.wrapper。它提供了一个包含...的wrapper()函数   调用。它执行上述初始化,以及   如果存在颜色支持,则初始化颜色。它然后运行你的   提供可调用并最终适当地取消初始化。该   在try-catch子句中调用callable来捕获异常,   执行curses deinitialization,然后传递异常   向上。因此,您的终端不会处于有趣的状态   异常。

请参阅here了解相关信息。