我希望打印调用
我使用 Rust 1.43 和 GDB 9.1。
main.rs
当我尝试使用rust-gdb进行调试时,我得到了这个:
我猜测可能是关于
为什么
std::path::Path
实例函数的结果。我使用 Rust 1.43 和 GDB 9.1。
main.rs
use std::path::Path;
fn main() {
let path = Path::new("/home/sweet/home");
println!("The path: {}", path.display());
}
当我尝试使用rust-gdb进行调试时,我得到了这个:
$ rust-gdb target/debug/poc-gdb-pathbuf
...
>>> start
>>> n
>>> print path
$1 = (*mut std::path::Path) 0x55555557c000
>>> print &path
$2 = (*mut *mut std::path::Path) 0x7fffffffe0c0
>>> print *path
$3 = std::path::Path {
inner: std::ffi::os_str::OsStr {
inner: std::sys_common::os_str_bytes::Slice {
inner: 0x55555557c000
}
}
}
>>> print *path.is_absolute()
Could not find function named 'std::path::Path::is_absolute'
>>> print path.is_absolute()
Could not find function named 'std::path::Path::is_absolute'
>>> print path.display()
Function 'std::path::Path::display' takes no arguments
>>> print *path.display()
Function 'std::path::Path::display' takes no arguments
如您所见,我无法正确调用单个Path
实例函数,它要么告诉我该函数不存在(但是存在的),要么告诉我它不需要参数(我没有传递任何参数)。
对于简单的最小结构函数调用,我没有任何问题,下面是一个可行的示例。
main.rs
struct Something {
x: u8
}
impl Something {
pub fn new(x: u8) -> Self {
Something { x }
}
pub fn show(&self) -> u8 {
return self.x
}
}
fn main() {
let something = Something::new(10);
something.show();
}
rust-gdb会话:
$ rust-gdb target/debug/poc-gdb-something
...
>>> start
>>> n
>>> print something
$1 = poc_gdb_pathbuf::Something {
x: 10
}
>>> print something.show()
$2 = 10
我猜测可能是关于
Path
实例是指针的问题,但是取消引用并不能帮助解决问题...为什么
Path
调用不起作用?我错过了什么吗?