您的位置: 首页 >商业 >

Windows10如何用DTrace跟踪那个烦人的bug

2020-04-08 16:25:25 编辑: 来源:
导读 如果您一直使用Unix或Linux构建复杂的应用程序,那么您应该熟悉DTrace。它最初是由Sun开发的,它是一个动态跟踪工具,允许您深入了解正在运行的系统中发生的许多事情,从硬件到操作系统,再到您的应用程序。这个强大的工具为您提供了许多信息,可以帮助您调试和优化代码。 使用命令行和它自己的脚本语言D,您可以编写跟踪程序,将操作分配给插装探测。您可以将DTrace探测器视为连接到操作系统或代码的万

如果您一直使用Unix或Linux构建复杂的应用程序,那么您应该熟悉DTrace。它最初是由Sun开发的,它是一个动态跟踪工具,允许您深入了解正在运行的系统中发生的许多事情,从硬件到操作系统,再到您的应用程序。这个强大的工具为您提供了许多信息,可以帮助您调试和优化代码。

使用命令行和它自己的脚本语言D,您可以编写跟踪程序,将操作分配给插装探测。您可以将DTrace探测器视为连接到操作系统或代码的万用表连接,等待满足某个条件,然后记录适当的信息。DTrace的优点之一是能够使用多个探测,提供了您需要的工具来理解事件之间的关系,并帮助您跟踪传统调试工具无法查明的复杂bug。

许多调试工具都会对代码的性能产生影响,而DTrace的设计目标是尽可能减少影响。这是一个重要的区别,它允许您拥有数百甚至数千个探测。这是一个可以很好地与现代分布式应用程序一起工作的模型,因为它展示了微服务是如何运行的,并为您提供了您以前没有的可观察性。

DTrace的D语言被设计成类似于C语言,所以它并不难学。脚本中使用的语法与命令行调用中使用的语法相同,命令行调用提供了一种将探测放入特定操作的快速方法,可以在屏幕上显示结果。命令行可以帮助测试和调试脚本;您可以在将探测添加到更复杂的集合之前交互式地尝试探测,了解可用于驱动其他探测的输出格式。

微软现在已经将DTrace移植到Windows上,构建在开放的DTrace代码和规范的基础上,增加了特定的Windows特性,支持对Windows事件跟踪(ETW)、Windows系统调用和Windows进程id的跟踪。虽然Windows具有与Unix和Unix派生的操作系统非常不同的体系结构模型,但是您应该发现DTrace可以很好地与Windows配合使用,特别是在使用特定于Windows的跟踪功能时。

虽然Windows有自己的ETW跟踪工具,但它们是静态的,需要构建到您的代码中。DTrace是动态的,它的优点是能够在运行时工作,允许您快速地测试和跟踪运行中的代码。甚至可以快速测试生产系统,获得调试问题所需的详细信息,完成后删除DTrace工具和配置。

用户通过DTrace命令与DTrace交互,DTrace命令是DTrace引擎的通用前端。D脚本被发送到DTrace内核组件执行,有时称为DIF虚拟机。Traceext。sys是微软添加的一个新的内核扩展驱动程序,它允许Windows公开DTrace提供跟踪所依赖的功能。

安装DTrace不像安装传统的Windows应用程序那么容易。这是一个非常低级的工具,需要重新启动几次才能运行。首先从Microsoft下载适当版本的DTrace。目前支持的版本只在windows10 2004或更高版本上运行;1904年和1909年的早期存档版本仍然可以下载,但不再支持。

下载后,安装DTrace应用程序,然后使用BCDEdit将其添加到Windows启动配置中。你可能需要关闭BitLocker,如果你使用它来保护你的电脑的开机配置,否则你可能需要在下次开机时输入你的BitLocker密钥。

接下来,将您的Windows PATH环境变量设置为引用DTrace,并为任何调试符号添加一个新的环境变量。这些文件将在需要时从微软下载。最后,确保您已经设置了虚拟安全模式来跟踪Windows内核边界。

参见:让Windows 10以你想要的方式工作的20个专业提示(免费PDF)(TechRepublic)

许多开发人员在虚拟机上进行测试,只要DTrace支持嵌套虚拟化,它就会在VM中运行。您可以在PowerShell中实现这一点,启用虚拟化扩展,然后重新启动主机PC。

一个重要的警告是,为了让DTrace正常工作,您需要以本地管理帐户的身份运行,所以如果您使用Microsoft帐户登录到Windows 10,请准备好添加一个新的本地用户。当您更新Windows Insider构建时,请记住通过BCDEdit重新启用DTrace。

准备好运行DTrace之后,您可以使用命令行单行工具查看可用的探测并尝试简单的查询,从而掌握D命令的结构。一旦您熟悉了这些,您就可以开始构建自己的脚本了。Microsoft在其DTrace GitHub页面上提供了一节样例脚本,它可以帮助您开始跨应用程序的跟踪。值得花点时间读一本关于D的书,因为编程跟踪脚本可能很复杂,尤其是在很可能异步触发探测的情况下。可以从dtrace.org网站上的免费动态跟踪指南入手。虽然它在技术上是为illumos(一个基于Open Solaris的开源操作系统)设计的,但是它的概念和过程可以被转换成Windows。

示例脚本被分成多个组,查看常见的Windows跟踪场景。您将发现一些用于查看磁盘操作,另一些用于文件、内存和与ETW一起使用。下载代码并在您的系统上运行它,然后针对您的特定需求创建自己的版本。

结果可能很难分析,尤其是当你面对充满数字的文件时。使用Excel或PowerBI之类的工具来构建可视化和探索跟踪数据,以帮助理解DTrace结果,这是一个好主意。

DTrace是一个强大的工具,很高兴看到微软将它引入Windows。但它显然不适合初学者,安装相对复杂,学习曲线陡峭。一旦您掌握了它的D语言,并学习了如何选择和实现探测,那么您就可以研究应用程序之间以及与Windows之间的交互方式了。如果您试图跟踪一个棘手的错误,这是一个工具,打开一个全新的窗口到窗口。

通过阅读这些Windows和Office提示、技巧和备忘单,成为你公司的微软内部人。星期一和星期三送货


免责声明:本文由用户上传,如有侵权请联系删除!

2016-2022 All Rights Reserved.平安财经网.复制必究 联系QQ280 715 8082   备案号:闽ICP备19027007号-6

本站除标明“本站原创”外所有信息均转载自互联网 版权归原作者所有。