内容提要
Rust官方发布调试调查结果:超半数受访者未使用调试器,常用打印调试。主要痛点包括值表示不佳、无法打印变量,异步代码和宏调试困难。库作者多不了解debugger_visualizer属性。未来改进方向包括利用Debug实现显示类型、增强异步支持及改进调试信息测试。
延伸解读
调试器使用率与经验水平的关系
调查显示,超过一半的受访者目前不使用调试器,其中近一半的初学者从未使用过。而高级用户中近半数会使用调试器。这表明调试器的使用与经验水平密切相关,初学者可能因上手难度或缺乏了解而回避调试器,而高级用户更可能将其作为日常工具。
打印调试的主导地位与原因
打印调试和dbg!宏是最常用的调试方式,超过81%的受访者认为日志或打印调试更简单或更快。这反映出调试器在易用性和便捷性上仍有不足,尤其是在设置和使用方面。尽管调试器功能强大,但打印调试的直观性使其难以被取代,这为调试器改进提供了方向。
调试器可视化支持不足
超过74%的受访者遇到值表示不佳的问题,而近62%的库作者不了解debugger_visualizer属性。该属性可嵌入Natvis或GDB漂亮打印机以改善值显示,但许多作者因时间或知识缺乏而未使用。这表明改进调试器可视化支持,并提高开发者对该属性的认知,是提升调试体验的关键。
异步与宏调试的挑战
在逐步调试时,异步代码和宏是最常遇到问题的场景,分别占28%和23%。异步调试体验不完善,宏展开的复杂性也增加了调试难度。未来改进方向包括增强异步支持,并利用Debug实现来显示类型,这可能有助于缓解这些问题。
Q&A
Rust 2026年调试调查中,有多少受访者目前使用调试器?
超过46%的受访者表示目前使用调试器,其余受访者分为“过去使用过”和“从未使用过”两类,因此超过一半的受访者目前不使用调试器。
Rust开发者最常用的调试方法是什么?
最常用的调试方法是打印调试和dbg!宏,其次是IDE中的lldb和命令行中的gdb。
Rust开发者不使用调试器的主要原因是什么?
最主要的原因是认为使用日志或打印调试更容易或更快,占比超过81%。其他原因包括代码“Just Works”不需要调试器(约37%),以及语言特性支持不佳(约26%)。
Rust调试中遇到的主要痛点有哪些?
最常见的痛点是值的表示不佳(超过74%),其次是无法打印变量(超过55%)。此外,异步代码和宏相关的调试也较为困难。
什么是debugger_visualizer属性?
debugger_visualizer属性可以应用于模块或crate根,用于在调试信息中嵌入文件,以改善特定调试器对值的显示。目前支持Natvis文件(用于WinDbg等Microsoft调试器)和GDB的pretty printers(Python脚本)。
调查中库作者对debugger_visualizer属性的了解和使用情况如何?
近62%的受访者是库作者,但他们不知道这个属性。在知道该属性但未使用的库作者中,一半表示没有时间维护visualizer属性,近一半表示不知道如何编写visualizer脚本。
Rust调试体验的未来改进方向有哪些?
改进方向包括利用类型的Debug实现来在调试器中显示类型,增强对异步代码的支持,以及改进调试信息和visualizer脚本的测试,以避免静默破坏或回归。