控制台开发日记(1)

Console是一个Rust异步调试工具。它的目标是让你在试图更好地理解你的异步任务的行为方式时,成为你所要使用的工具。

自从几个月前开始制作 Tokio Console 原型以来,我们一直在努力工作,把它变成一个很棒的异步任务调试器。我们想围绕它的进展情况提供一些集中的更新。

控制台是什么?

Console 是一个Rust异步调试工具。它的目标是让你在试图更好地理解你的异步任务的行为方式时,成为你所要使用的工具。它利用了 tracing event 和 span,因此旨在实现运行时的无关性。

更新

易于启动和生成器: 我们使向你的应用程序添加仪器变得更加容易。对于大多数人来说,只需在主函数的顶部添加 console_subscriber::init() 就足够了!它将使用合理的默认值,检查一些环境变量进行定制,并建立一个独立的订阅器。如果你需要更多的控制与现有的跟踪或运行时集成,也有一个方便的 console_subscriber::Builder API。

129774465-7bd2ad2f-f1a3-4830-a8fa-f72667028fa1

一切都更漂亮了! 主列表视图看起来好多了。我们把任务的 “name” 变成了一等一的东西,在列表里有了自己的栏目。任务ID变得更漂亮,与用户期望的更一致。颜色和UTF-8的使用更好了,它默认检查终端支持的内容。例如,显示持续时间的字段对不同的量级(纳秒与毫秒与秒)使用微妙的不同颜色。

129774524-288c967b-6066-4f98-973d-099b3e6a2c55

**选择任务来查看"任务细节"视图。**这包括关于该任务的更多细节和指标。有一个任务所有轮询时间的柱状图,让你看到你的任务需要多长时间才能完成工作。还有关于一个任务被唤醒多少次的信息,你可以将其与轮询次数以及自上次唤醒后的时间进行比较。

时间性。在与用户交流后,我们优先考虑了控制台的一些 “时间控制” 功能。到目前为止,我们已经实现了暂停控制台的功能(仍然可以探索现有的任务),然后恢复到 “活动”。现在有一个选项可以将所有相关事件记录到磁盘上的一个文件中,目的是能够在控制台中重放该文件。

视频演示。我们制作了一个演示,展示了控制台,以及如何使用它来调试一些常见的任务错误行为。

感谢:

  • Eliza Weisman
  • Sean McArthur
  • Zahari Dichev
  • Oğuz Bilgener
  • @gneito
  • @memoryruins
  • Jacob Rothstein
  • Artem Vorotnikov
  • David Barsky
  • Wu Aoxiang

我们也要感谢你们在你们的应用中一直在尝试它,并给我们提供了宝贵的反馈意见。

内容出处: https://tokio.rs/blog/2021-09-console-dev-diary-1