主要观点:近期事件导致调试体验下降,作者投入大量时间改善 Rust 的调试信息,介绍了调试信息相关的定义、各层架构及面临的挑战等,包括 Rust 层、LLVM 和原始调试信息层、调试器层、调试器可视化层等,虽取得一定进展但仍需更多关注和帮助,作者享受这个过程并鼓励他人参与。
关键信息:
- 调试信息生成于代码生成阶段,Rust 层可控制修改但受限于其他层,如 PDB 不支持泛型参数需微软修复。
- LLVM 层了解较少,有两种 PDB 处理程序且 Rust 无法保证使用哪种。
- 调试器方面,CDB、GDB、LLDB 各有特点,如 LLDB 处理多种调试信息格式,Rust 与调试器存在交互问题。
- 调试器可视化层有两种“层”,Rust 库作者的调试器可视化 API 及随 Rust 工具链分发的脚本,存在一些主观问题和限制。
重要细节:
- 调试信息是 Rust 告知 LLVM 的一组信息,通过多个中间层传递,过程可能“有损”。
- DWARF 是用于
*-gnu
目标的调试信息格式,PDB 是微软的专有格式用于*-msvc
目标。 - LLDB 可通过语言插件弥补与调试器内部表示的差距,但存在维护等问题。
- 关于 Rust 插件的归属、语言选择及工作量等存在诸多疑问和讨论。
- 调试器可视化脚本可美化调试输出,但不同调试器存在差异和限制,存在主观优化难题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。