我有這樣的代碼:如何瀏覽GDB或LLDB中的Rust enum字段?
struct Foo {
id: i32,
}
enum Bar {
Variant(Foo),
}
fn main() {
let x = Bar::Variant(Foo { id: 100 });
println!("set breakpoint here");
}
我怎樣才能打印Foo
實例的內存地址?
我有這樣的代碼:如何瀏覽GDB或LLDB中的Rust enum字段?
struct Foo {
id: i32,
}
enum Bar {
Variant(Foo),
}
fn main() {
let x = Bar::Variant(Foo { id: 100 });
println!("set breakpoint here");
}
我怎樣才能打印Foo
實例的內存地址?
在已經內置了鏽調試支持最近的GDB,您可以使用防鏽上下的語法:
(gdb) p &x.0.id
$3 = (i32 *) 0x7fffffffe0f0
GDB知道枚舉是哪個變種是在使用,因此x.0
名Foo
在x
(因爲Variant
是一個元組)。 .id
的名稱爲i32
,&
取地址。
Idiomatic Rust使用'PascalCase'作爲結構/枚舉/枚舉變體。由於你的類型的外殼對於這個問題並不重要,所以我改變了它們,這也改進了代碼突出顯示。 – Shepmaster