5

我目前的临时方法是记录到文本文件,但这不是很互动。我尝试过使用pdb,但这似乎与 urwid 不符,pdb一旦遇到断点就不会接受任何输入。

4

2 回答 2

4

一些实践... 调试 urwid 很奇怪,并且在经典意义上不太可能,大多数时候在渲染画布后你不能再检查东西了。

对我有什么帮助:

  • 将错误路由到文件中。如果您遇到异常并想了解什么、在哪里以及如何,这里给出了很好的实现:https ://stackoverflow.com/a/12877023/5058041
  • 真正尝试了解您的模块是什么以及您希望如何实现目标。阅读文档以备n+1不时之需。
  • 查看您使用的小部件的实现。通常他们有更多的信息。

我知道这并不能真正算作调试,但它在发现错误或奇怪行为方面帮助了我很多。

于 2017-05-12T12:10:24.387 回答
2

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

我没有构建很多复杂的应用程序(单人纸牌游戏是我用它编写的最大的应用程序),所以这种方法已经足够好了。

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

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

于 2017-08-07T20:27:26.717 回答