Visual Studio 调试引擎文档及其包含的两个示例现在已经上线了。 这个调试引擎代号Concord,是最初与Visual Studio 2012 一同发布的新调试引擎。
Concord 的设计由多个相互联系的不同部件组成,而不是如前任般的整体统一。这种新设计让公共 API 成为可能,提供入口来扩展 Visual Studio 的调试功能如断点或调用栈。该设计也为扩展实现提供了使用本地(C++)代码或使用托管(C#)代码的选择。
第一个示例是经典的HelloWorld 。编译需要Visual Studio SDK。HelloWorld 示例在调用栈中输出1 行,如下图。
另外一个扩展示例是.NET language (CLR) 表达式计算器。表达式计算器是一个允许用户使用与代码相同的语言进行调试的组件。这通过定制化代码语言的调试器窗口如监视、调试栈和功能断点来实现。简单讲,这个扩展提供了如何在Visual Studio 中为定制化编译器实现调试的示例。
Concord API 相当大,这些已有的线索能让导览更简单:
- 当决定要实现什么接口的时候,我们把所有接口按实现接口的组件类别组织起来。如果你看一下本地 API 的头文件(vsdebugeng.h),你可以见到各个接口是按节排列的,节就像是一段对那个类别的组件用途的描述。
- 当寻找方法去调用的时候,会忽略接口。Concord API 以类的方法而不是接口方法的形式曝露给调用者。
- 即使你在用托管代码实现一个 Concord 组件,有时候找到你想要的方法的最快途径是在 vsdebugeng.h 中搜索字符串。因为本地和托管代码的 API 是一样的,如果你找到本地 API,在托管代码中也同样能用。
- 在 Microsoft.VisualStudio.Debugger.Engine 中浏览参考 - 这是#3 的另一面,即便你是在本地代码中使用 Concord API,Visual Studio 对于托管 API 的浏览支持得真的很好。
虽然 Concord 自身并不是开源的,然而这个文档项目是。可以通过提交新示例作出贡献。
查看英文原文: Microsoft makes Samples and Documentation Public for Concord, Visual Studio Debug Engine
感谢张龙对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论