如何遍历 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.0
将 Foo
命名为 x
(因为 Variant
是一个元组)。 .id
命名 i32
,&
取地址。
我有这个代码:
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.0
将 Foo
命名为 x
(因为 Variant
是一个元组)。 .id
命名 i32
,&
取地址。