微软为Windows Insider开发者提供关注框架DTrace

现在Windows Insider开发人员可以开始使用动态关注框架DTrace,微软于GitHub上的OpenDTrace项目下,为DTrace on Windows创建了一个分支,以OpenDTrace端口口在Windows上支持DTrace。

微软持续与开源社群合作,而他们认为过去十年,在调试上最有用的进展,是动态关注框架DTrace。 DTrace最初由太阳微系统开发,用来在产品系统即时检测核心与应用程序问题。 DTrace提供了类似C语言的高端程序语言,让开发者可以动态插入关注点,并对这些关注点设置​​过滤条件或是错误,撰写程序代码分析锁定模式,或是侦测死结。

DTrace原本是为Solaris开发,而后被移植到macOS和Linux等系统,2016年在GitHub上开始的OpenDTrace计划,目的是要打造无关操作系统且可以移植的DTrace实例,涵盖macOS、FreeBSD、OpenBSD、NetBSD、Linux甚至是嵌入式系统,而微软也决定使用OpenDTrace端口口,在Windows上支持DTrace。

Windows版DTrace重用大部分OpenDTrace用户模式组件和基础架构,用户使用dtrace命令与DTrace交互,而该命令则是DTrace引擎的通用前端,dtrace命令也支持脚本,D脚本会在用户空间被编译成中介格式DIF,并送到DTrace核心组件执行,这部分则是在dtrace.sys驱动程序中运行。

微软为Windows版DTrace添加核心扩展驱动程序Traceext.sys,能够公开DTrace需要的Windows功能,以提供关注功能使用,Windows核心会在获取堆栈消息(Stackwalk)或是访问内存时提供标记(Callout),然后由关注扩展组件实例。

微软提到,DTrace的安全模型很适合Windows,DTrace使用中介的形式验证安全性,并确保工作都在自己的执行环境中运行,而该执行环境也处理任何的执行中错误,以避免系统崩溃,除此之外,除非在性能敏感的路径上设置过多的关注点,否则关注点的成本很低,不会明显影响系规整体性能。

用户可以在Windows 10 Insider build 18342以及更新的版本上使用DTrace,而且仅支持x64 Windows,也只会捕捉64进制程序的关注信息。所有的Windows上DTrace更新,开发者都可以在OpenDTrace项目下的DTrace on Windows分支取得,接下来几个月,微软计划与OpenDTrace社群整合程序代码更改,而源码也可以在微软维护的第三方源码网站获得。