1 个稳定版本
1.0.0 | 2023年12月8日 |
---|
#764 在 调试
在 3 个代码包中 使用 (直接使用 2 个)
100KB
2.5K SLoC
FireDBG Rust 源代码解析器
基于 syn
.
firedbg-rust-parser
是一个 Rust 源代码解析器。它可以解析 Rust 源文件,遍历 Rust 的抽象语法树,然后生成一个断点列表,供调试器在每次函数调用开始时暂停程序。
遍历 AST
我们将遍历 Rust AST,syn::Item
,并收集所有形式的功能/方法
- 自由独立的函数,
syn::Item::Fn
- 实现函数,
syn::Item::Impl
- 特质默认函数,
syn::Item::Trait
- 实现特质函数,
syn::Item::Impl
- 嵌套函数,递归遍历
syn::Item
- 内联模块中定义的函数,
syn::Item::Mod
可中断的 Span
Span是一个源代码区域,由一个包含行号和列号的范围元组以及宏展开信息表示。它允许调试器在正确位置设置断点。调试器将在可中断范围的开始或结束处设置断点。
fn func() -> i32 {
/* ^-- Start of Breakable Span: (Line 1, Column 19) */
let mut i = 0;
/* ^-- End of Breakable Span: (Line 3, Column 5) */
for _ in (1..10) {
i += 1;
}
i
}
想法
当前实现很简单,但我们得到了我们需要的。我们考虑嵌入Rust Analyzer,因为有几个优点:1) 获取完全限定的类型名称 2) 遍历静态调用图。问题是资源使用:我们最终会通过cargo、语言服务器和firedbg三次运行编译器前端。
依赖项
~11-21MB
~321K SLoC