Rust - 使用简单函数,调试器变量重复且随机?
Rust - With Simple Function, Debugger variables duplicated and random?
use std::fmt::Debug;
use std::ops::Add;
fn main() {
fn calculate<T:Debug + Add::<Output=T>, const N: usize>(data_set: [T; N]) -> (i32, i32) {
// Key Code
let _var = data_set.get(0);
println!("Output_1: {:?}", data_set.get(0));
// Ignore
return (0, 0)
}
let data = [1509, 1857, 1736, 1815, 1576];
let result = calculate(data);
println!("Output_2: {:?}", result);
}
我有一个非常简单的 Rust 函数,它只是想获取传递给它的列表的第一个值。
我一直在尝试使用 rust-analyser
在 vs code 中调试它,但调试面板中的局部变量显示重复 3 次,我不明白为什么会这样。
函数前内存Stack/Pile/Heap:
data: {1509, 1857, 1736, 1815, 1576}
进入函数后立即内存Stack/Pile/Heap:
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {1509, 1857, 1736, 1815, 1576}
我推断问题是由行 println!("Output_1: {:?}", data_set.get(0));
引起的,因为通过删除它,重复的 data_set's
消失了。但是,坦率地说,我不明白为什么会导致这个问题。
此外,在执行行 println!("Output_1: {:?}", data_set.get(0));
时,值变得随机和极端,将内存 stack/heap 更改为
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {-445645856, 223, -445645856, 223, -445645856} // numbers are different each execution.
data_set: {1509, 1857, 1736, 1815, 1576}
有人可以解释为什么会这样吗?
如果有人能建议一个更好的标题,那就太好了,因为我不知道如何描述这个问题。
问题:
这是最新版本1.6.9
中引入的LLDB Debugger bug
解法:
回滚到 1.6.8 或更早版本应该可以暂时解决问题。
修复:
我已在 github 此处 https://github.com/vadimcn/vscode-lldb/issues/584
向开发人员提出了这个问题
use std::fmt::Debug;
use std::ops::Add;
fn main() {
fn calculate<T:Debug + Add::<Output=T>, const N: usize>(data_set: [T; N]) -> (i32, i32) {
// Key Code
let _var = data_set.get(0);
println!("Output_1: {:?}", data_set.get(0));
// Ignore
return (0, 0)
}
let data = [1509, 1857, 1736, 1815, 1576];
let result = calculate(data);
println!("Output_2: {:?}", result);
}
我有一个非常简单的 Rust 函数,它只是想获取传递给它的列表的第一个值。
我一直在尝试使用 rust-analyser
在 vs code 中调试它,但调试面板中的局部变量显示重复 3 次,我不明白为什么会这样。
函数前内存Stack/Pile/Heap:
data: {1509, 1857, 1736, 1815, 1576}
进入函数后立即内存Stack/Pile/Heap:
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {1509, 1857, 1736, 1815, 1576}
我推断问题是由行 println!("Output_1: {:?}", data_set.get(0));
引起的,因为通过删除它,重复的 data_set's
消失了。但是,坦率地说,我不明白为什么会导致这个问题。
此外,在执行行 println!("Output_1: {:?}", data_set.get(0));
时,值变得随机和极端,将内存 stack/heap 更改为
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {-445645856, 223, -445645856, 223, -445645856} // numbers are different each execution.
data_set: {1509, 1857, 1736, 1815, 1576}
有人可以解释为什么会这样吗?
如果有人能建议一个更好的标题,那就太好了,因为我不知道如何描述这个问题。
问题:
这是最新版本1.6.9
中引入的LLDB Debugger bug
解法:
回滚到 1.6.8 或更早版本应该可以暂时解决问题。
修复:
我已在 github 此处 https://github.com/vadimcn/vscode-lldb/issues/584
向开发人员提出了这个问题