debugging CLion在调试Rust代码时是否可能对函数求值?

js4nwp54  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(162)

一段Rust代码:

pub fn main() {
    let a = "hello";
    let b = a.len();
    let c =b;
    println!("len:{}",c)
}

在CLion中调试时,是否可以对函数求值?例如,逐步调试代码,现在代码运行到最后一行println!...,当前步骤在此停止,通过将表达式a.len()添加到watch a variable窗口,IDE无法对a.len()求值。它表示:error: no field named len

d8tt03nd

d8tt03nd1#

这与不能为Rust代码创建条件断点的原因相同:
Can't create a conditional breakpoint in VSCode-LLDB with Rust

ih99xse1

ih99xse12#

我希望,我回答这个问题还不算太晚,但是对于lldb和gdb,Rust的调试能力目前是相当受约束的。任何复杂的东西都可能产生问题。
我从rust-lldb中观察到,表达式解析器只能理解Rust的一小部分,不支持宏。
未使用的函数不包含在最终的二进制文件中。例如,由于该方法不包含在二进制文件中,因此您无法在调试器中对HashMap执行capacity()。
方法必须按如下方式命名:结构值.方法(&struct value)
我还没有发现在泛型结构上调用单态化函数的技术(如HashMap)。
例如,“hello”是一个包含尾随NUL字节的const char [5]。lldb表达式中的字符串常量“...”是作为C样式字符串常量生成的。因此,它们不是有效的函数

相关问题