控制台开发日记(1)
自从几个月前开始制作 Tokio Console 原型以来,我们一直在努力工作,把它变成一个很棒的异步任务调试器。我们想围绕它的进展情况提供一些集中的更新。
控制台是什么?
Console 是一个Rust异步调试工具。它的目标是让你在试图更好地理解你的异步任务的行为方式时,成为你所要使用的工具。它利用了 tracing
event 和 span,因此旨在实现运行时的无关性。
更新
易于启动和生成器: 我们使向你的应用程序添加仪器变得更加容易。对于大多数人来说,只需在主函数的顶部添加 console_subscriber::init()
就足够了!它将使用合理的默认值,检查一些环境变量进行定制,并建立一个独立的订阅器。如果你需要更多的控制与现有的跟踪或运行时集成,也有一个方便的 console_subscriber::Builder
API。
一切都更漂亮了! 主列表视图看起来好多了。我们把任务的 “name” 变成了一等一的东西,在列表里有了自己的栏目。任务ID变得更漂亮,与用户期望的更一致。颜色和UTF-8的使用更好了,它默认检查终端支持的内容。例如,显示持续时间的字段对不同的量级(纳秒与毫秒与秒)使用微妙的不同颜色。
**选择任务来查看"任务细节"视图。**这包括关于该任务的更多细节和指标。有一个任务所有轮询时间的柱状图,让你看到你的任务需要多长时间才能完成工作。还有关于一个任务被唤醒多少次的信息,你可以将其与轮询次数以及自上次唤醒后的时间进行比较。
时间性。在与用户交流后,我们优先考虑了控制台的一些 “时间控制” 功能。到目前为止,我们已经实现了暂停控制台的功能(仍然可以探索现有的任务),然后恢复到 “活动”。现在有一个选项可以将所有相关事件记录到磁盘上的一个文件中,目的是能够在控制台中重放该文件。
视频演示。我们制作了一个演示,展示了控制台,以及如何使用它来调试一些常见的任务错误行为。
感谢:
- Eliza Weisman
- Sean McArthur
- Zahari Dichev
- Oğuz Bilgener
- @gneito
- @memoryruins
- Jacob Rothstein
- Artem Vorotnikov
- David Barsky
- Wu Aoxiang
我们也要感谢你们在你们的应用中一直在尝试它,并给我们提供了宝贵的反馈意见。