gpt4 book ai didi

rust - 如何调试不安全 block 中的非法硬件指令错误?

转载 作者:行者123 更新时间:2023-11-29 08:15:39 24 4
gpt4 key购买 nike

代码如下:

pub struct Node<T> {
data: Option<T>,
level: usize,
forward: [Option<*mut Node<T>>; MAX_HEIGHT],
}

我想迭代链表:

// let next = some_node.forward[n];
unsafe {
loop {
match next {
None => { break; }
Some(v) => {
write!(f, "{:?}", (*v).data)?;
break;
}
}
}
}

当我使用 unsafe 关键字时,我得到了 [1] 74042 illegal hardware instruction cargo run 错误,所以有没有办法调试这个 unsafe block ?

最佳答案

unsafe是一种说法,“闭嘴,rustc,我知道我在做什么。”在这种情况下,您向编译器保证 v始终是指向 Node<T> 的有效对齐指针, forward 的数组索引解析为 Option<*mut Node<T>> 的数组尺寸MAX_HEIGHT .如果违反了这些假设中的任何一个,您将回到未定义行为领域。

您已关闭所有安全措施并将您的编译器瞄准未知指针。我大脑中的理性部分想确切地知道您要在这里完成什么。

根据所提供的信息,我可以提供的最佳建议是使用 rust-gdb并逐步执行您的程序,直到您的指针看起来不正常。

关于rust - 如何调试不安全 block 中的非法硬件指令错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54358127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com