调试urwid应用程序有什么好的选择?

问题描述:

我目前的临时方法是记录到一个文本文件,但这不是非常互动。我尝试过使用pdb,但这似乎与urwid无缘,pdb一旦遇到断点就不会接受任何输入。调试urwid应用程序有什么好的选择?

一些做法不尽人意......调试urwid很古怪,在古典意义上说不太可能,在渲染画布之后的大部分时间内,您都无法再真正检查某些东西。

什么帮助了我:

  • 路由错误到一个文件中。如果你有例外情况,想要了解什么,在哪里以及如何,在这里给出了很好的实现:https://*.com/a/12877023/5058041
  • 确实试着了解你的模块是什么以及你想如何实现。阅读n+1时间的文档是个不错的主意。
  • 看看你使用的小部件的实现。通常他们有更多的信息。

我知道这并不算真正的调试,但它帮助我找到错误或奇怪的行为。

我发现自己做的一件事是添加一个文本小部件只是为了显示调试消息。

我还没有构建许多复杂的应用程序(solitaire game是我用它写的最大的应用程序),所以这种方法已经足够好了。

在某些特定情况下,您仍然可以使用PUDB - 但由于它也使用Urwid,它将窃取应用程序的输出。实际上,从应用程序转到pudb后(也许从您的代码中添加了一个pudb.set_trace()断点),那么您将无法返回到您的应用程序。

对于更复杂的应用程序,建立“调试模式”可能很有趣,或者您可以尝试使用remote pudb?还没有尝试过,但它看起来很有用。 =)