You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
工作内容
异步函数可以点击跳转;
停在断点处树能够自动更新;
vs code原生call stack面板内容已经改成逻辑调用栈;
变量面板功能实现;
推广网站 和 内容 搭建;
关于白名单的优化设计,思考如下:
用户调试异步 Rust 程序时,通常是这样的:
用户几乎总是从一两个他知道的函数开始的,而不是面对一个大列表去挑选。
白名单不应该是"用户手动选要跟踪什么",而应该是过滤噪音:
┌─────────────────────────────────────────────────┐ │ 自动生成的 poll 函数列表(可能几十上百个) │ │ │ │ ✅ my_app::handle_request::{async_fn#0} │ ← 用户代码 │ ✅ my_app::db_query::{async_fn#0} │ ← 用户代码 │ ✅ my_app::send_response::{async_fn#0} │ ← 用户代码 │ ❌ tokio::runtime::task::harness::poll │ ← runtime 噪音 │ ❌ tokio::io::poll_read_buf │ ← runtime 噪音 │ ❌ hyper::proto::h1::dispatch::poll │ ← 框架噪音 │ ... │ └─────────────────────────────────────────────────┘ 白名单的作用:让用户去掉下面那些 runtime/框架的噪音 而不是让用户从零开始选1. 白名单:自动分类 + 简单开关
不是让用户面对一个扁平的列表打勾,而是自动分组:
按 crate/模块 分组,默认只勾选用户自己的 crate。这样用户不需要懂每个函数是干什么的,只需要决定"我要不要跟踪这个库的内部"。
2. Trace 根:和白名单分开
Trace 根的选择应该独立于白名单,有两种入口:
白名单控制的是 trace 的"深度/广度"(跟踪哪些子调用),trace 根控制的是"从哪开始"。 这两个概念要分开。
3. 总结:三层设计
这样用户的心智负担就很小了:
会议内容
All reactions