- Visual Studio Code 权威指南
- 韩骏
- 587字
- 2021-03-28 23:46:56
3.5 Debug Adapter Protocol
相信读者朋友已经对Language Server Protocol有了一定的了解。我们现在再来了解一下Debug Adapter Protocol(DAP),相信读者一定会发现它们两者之间的异曲同工之妙。
DAP是一个基于JSON的协议,它抽象了开发工具与调试工具之间的通信。那么,我们为什么要使用DAP呢?
在没有DAP之前,试想一下,如果需要对一门新语言添加调试的支持,那么就要对许多基本的调试功能进行支持:
○ 各种类型的断点
○ 变量查看
○ 多进程及多线程支持
○ 调用堆栈
○ 表达式监控
○ 调试控制台
不仅如此,我们还要针对不同的开发工具重复这些工作,因为每一个开发工具都有不同的调试界面的API。如图3-2所示,这会导致大量的重复劳动。
图3-2 未使用DAP的情况
在Visual Studio Code项目建立之初,开发团队就意识到要把“前端的”界面与“后端的”与语言相关的实现进行解耦。于是,对于语言功能,我们有了LSP,对于调试功能,我们有了DAP。
由于我们难以保证现有的调试工具能够兼容DAP,因此Visual Studio Code开发团队设计了一个中间层的组件,也就是Debug Adapter,用来帮助现有的调试工具与DAP相兼容。图3-3充分展示了使用DAP所带来的好处:
○ Debug Adapter可以被不同的开发工具所使用,分摊了开发成本。
○ DAP并不和Visual Studio Code进行绑定,它是一个进行开源开发的协议,可以作为其他开发工具开发通用调试界面的基础。
图3-3 使用DAP的情况
与LSP类似,如今,众多主流语言都已经有了相应的Debug Adapter,许多编辑器/IDE也都支持了LSP,包括Visual Studio Code、Visual Studio、Eclipse IDE、Emacs、Vim、Cloud Studio等。完整的名单可以到参考资料[9]中进行查询。