我有以下代码:
struct Foo {
id: i32,
}
enum Bar {
Variant(Foo),
}
fn main() {
let x = Bar::Variant(Foo { id: 100 });
println!("set breakpoint here");
}
Run Code Online (Sandbox Code Playgroud)
如何打印Foo实例的内存地址?
在具有内置Rust调试支持的最新GDB中,可以使用Rust-ish语法:
(gdb) p &x.0.id
$3 = (i32 *) 0x7fffffffe0f0
Run Code Online (Sandbox Code Playgroud)
GDB知道正在使用哪个枚举变量,因此将其x.0命名为Fooin x(因为Variant是元组)。将.id命名为i32,并&获取地址。