所以你想要更好的调试信息?

主要观点:近期事件导致调试体验下降,作者投入大量时间改善 Rust 的调试信息,介绍了调试信息相关的定义、各层架构及面临的挑战等,包括 Rust 层、LLVM 和原始调试信息层、调试器层、调试器可视化层等,虽取得一定进展但仍需更多关注和帮助,作者享受这个过程并鼓励他人参与。

关键信息:

  • 调试信息生成于代码生成阶段,Rust 层可控制修改但受限于其他层,如 PDB 不支持泛型参数需微软修复。
  • LLVM 层了解较少,有两种 PDB 处理程序且 Rust 无法保证使用哪种。
  • 调试器方面,CDB、GDB、LLDB 各有特点,如 LLDB 处理多种调试信息格式,Rust 与调试器存在交互问题。
  • 调试器可视化层有两种“层”,Rust 库作者的调试器可视化 API 及随 Rust 工具链分发的脚本,存在一些主观问题和限制。

重要细节:

  • 调试信息是 Rust 告知 LLVM 的一组信息,通过多个中间层传递,过程可能“有损”。
  • DWARF 是用于*-gnu目标的调试信息格式,PDB 是微软的专有格式用于*-msvc目标。
  • LLDB 可通过语言插件弥补与调试器内部表示的差距,但存在维护等问题。
  • 关于 Rust 插件的归属、语言选择及工作量等存在诸多疑问和讨论。
  • 调试器可视化脚本可美化调试输出,但不同调试器存在差异和限制,存在主观优化难题。
阅读 9
0 条评论