有没有办法在 LLDB 调试器中查看 Rust 变量的调试表示?

Der*_*urn 5 rust lldb

Rust 代码可以使用 LLDB 进行调试。然而,CodeLLDB 等工具使用的变量表示只是变量内存内容的细分,并且不显示标准Debug特征中的任何信息。

CodeLLDB变量视图

有什么方法可以使用 LLDBDebug在运行时调用变量的实际表示吗?这通常包含大量有用信息,而这些信息无法从简单的内存快照中清晰地看出。

Jim*_*ham 4

Rust 中的“调试”特性看起来非常接近 ObjC 和 Swift 对象描述方法:它提供了一个 to-string 方法,可以打印开发人员友好的对象视图。据我所知,这个特性与 Rust 中的标准格式打印机制配合。

如果这是正确的,那么在 lldb 中访问 Rust 调试特征的自然方法是实现 lldb 的“Rust LanguageRuntime”的“对象描述”部分,并在幕后调用打印函数。po这可以通过 lldb 中的or命令访问print-object

不幸的是,Rust 在 lldb 中没有“Rust LanguageRuntime”,目前也没有任何支持。lldb 源代码中唯一提到 Rust 的是 Rust mangling 方案的识别器和一个定义,该定义表示“除了 mangling,假装 Rust 是 C++”。所以目前这不是一个可行的选择。

您也可以尝试直接在表达式求值器中调用 Rust 的 print ,但是 YMMV 在 lldb 中调用 Rust 代码并不总是有效:事实证明,Rust 不是 C++...