如何遍历 GDB 或 LLDB 中的 Rust 枚举字段?

How to walk through Rust enum fields in GDB or LLDB?

我有这个代码:

struct Foo {
    id: i32,
}
enum Bar {
    Variant(Foo),
}

fn main() {
    let x = Bar::Variant(Foo { id: 100 });
    println!("set breakpoint here");
}

如何打印Foo实例的内存地址?

在内置 Rust 调试支持的最新 GDB 中,您可以使用 Rust-ish 语法:

(gdb) p &x.0.id
 = (i32 *) 0x7fffffffe0f0

GDB 知道正在使用枚举的哪个变体,因此 x.0Foo 命名为 x(因为 Variant 是一个元组)。 .id 命名 i32& 取地址。