是否有类似 C# 的调试显示属性用于在 VS Code 中调试 Rust?

Mat*_*ias 7 debugging rust visual-studio-code

在 VS Code 中调试 Rust 代码时,导航变量对象的所有嵌套对象臂既困难又耗时。

是否可以使用更易读的变量内容表示形式,例如调试期间将光标悬停在 IDE 中的变量上时显示的内容?

例如,查看"b"String 变量的内容ident会在 Visual Studio Code 中显示,如下所示:

在 VS Code 中查看字符串

如果能够像 C# 中的调试器显示属性那样看到更简洁的内容缩略图,那就太好了。

我不喜欢println!调试:p

使用 GDB 或 LLDB 作为调试引擎有区别吗?

作为另一个例子,类型变量Symbol

pub struct Symbol {
    pub ident: String,
    pub childs: Vec<Symbol>,
    pub depth: u32,
    pub fixed: bool,
}
Run Code Online (Sandbox Code Playgroud)

在 VS Code 调试器中显示如下:

显示复杂类型

fmt::Debug是为了该结构返回而实现的A(a),而不是{depth:2, fixed:true}如图所示。

Yur*_*rik 0

  • 在 Microsoft 世界中,MSVC 支持natvis - Rust 源代码已经使用的相当进化的 CPP 标准 - 请参阅src/etc/natvis。AFAIK,natvis 文件链接到 .pdb 文件,因此它们可能无法在非 pdb 平台上使用(未经证实)。

  • Rust 社区中有一个关于如何处理 natvis 的pre-RFC讨论。

  • 当与 LLDB 调试器一起使用时, JetBrain 的 CLion 有一些natvis 支持(博客),不确定它是否也适用于 Rust。

  • 就我个人而言,我希望它能够超越 Microsoft 独有的工具链,并且能够可视化复杂类型 - 就像DebuggerTypeProxy适用于复杂 C# 对象的方式。natvis似乎是朝这个方向迈出的一步。