cul*_*rón 5 rust lldb vscode-debugger
我正在使用 LLDB 在 VS-Code 中调试 Rust 程序。
关于表达式的文档说有程序变量和结构的 Python 投影。
所以我检查了调试器中的情况,并设置了断点,但表达式不起作用。
在变量部分,有ooo,它是一个列表,其中第 0 个元素具有id并且它的第 0 个元素具有我正在查找的值。但是,表达式/se ooo[0]['id'][0] == 135654667在 Python 调试器中引发 IndexError:IndexError: Index '0' is out of range。
具有讽刺意味的是,当您在调试控制台中键入该内容时,它会起作用并建议一个表达式!
我尝试过原生 Rust 表达式:
/nat ooo.id().inner_id() == 135654667
Run Code Online (Sandbox Code Playgroud)
输出是
Stopped due to an error evaluating condition of breakpoint 1.1: "ooo.id().inner_id() == 135654667"
Couldn't execute expression:
error: no field named id
Run Code Online (Sandbox Code Playgroud)
...尽管在真实的应用程序中该表达式确实有效:
let x = ooo.id().inner_id() == 135654667;
println!("{}", x);
Run Code Online (Sandbox Code Playgroud)
这会编译并打印 id。
我究竟做错了什么?
主线 lldb 对 Rust 的支持并不完整。特别是,表达式解析器只是 clang 表达式解析器(它不了解 Rust)。因此,它仅适用于也解析为 C 表达式的表达式(并使用相同的调用约定)。断点条件只是停止时计算的表达式。
有一个 lldb 分支具有更完整的 Rust 支持,但目前似乎没有得到积极维护。这里还有更多信息:
https://github.com/rust-lang/lldb/wiki
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |