您的位置: 首頁 >商業(yè) >

Windows10如何用DTrace跟蹤那個煩人的bug

2020-04-08 16:25:25 編輯: 來源:
導(dǎo)讀 如果您一直使用Unix或Linux構(gòu)建復(fù)雜的應(yīng)用程序,那么您應(yīng)該熟悉DTrace。它最初是由Sun開發(fā)的,它是一個動態(tài)跟蹤工具,允許您深入了解正在運行的系統(tǒng)中發(fā)生的許多事情,從硬件到操作系統(tǒng),再到您的應(yīng)用程序。這個強大的工具為您提供了許多信息,可以幫助您調(diào)試和優(yōu)化代碼。 使用命令行和它自己的腳本語言D,您可以編寫跟蹤程序,將操作分配給插裝探測。您可以將DTrace探測器視為連接到操作系統(tǒng)或代碼的萬

如果您一直使用Unix或Linux構(gòu)建復(fù)雜的應(yīng)用程序,那么您應(yīng)該熟悉DTrace。它最初是由Sun開發(fā)的,它是一個動態(tài)跟蹤工具,允許您深入了解正在運行的系統(tǒng)中發(fā)生的許多事情,從硬件到操作系統(tǒng),再到您的應(yīng)用程序。這個強大的工具為您提供了許多信息,可以幫助您調(diào)試和優(yōu)化代碼。

使用命令行和它自己的腳本語言D,您可以編寫跟蹤程序,將操作分配給插裝探測。您可以將DTrace探測器視為連接到操作系統(tǒng)或代碼的萬用表連接,等待滿足某個條件,然后記錄適當(dāng)?shù)男畔?。DTrace的優(yōu)點之一是能夠使用多個探測,提供了您需要的工具來理解事件之間的關(guān)系,并幫助您跟蹤傳統(tǒng)調(diào)試工具無法查明的復(fù)雜bug。

許多調(diào)試工具都會對代碼的性能產(chǎn)生影響,而DTrace的設(shè)計目標是盡可能減少影響。這是一個重要的區(qū)別,它允許您擁有數(shù)百甚至數(shù)千個探測。這是一個可以很好地與現(xiàn)代分布式應(yīng)用程序一起工作的模型,因為它展示了微服務(wù)是如何運行的,并為您提供了您以前沒有的可觀察性。

DTrace的D語言被設(shè)計成類似于C語言,所以它并不難學(xué)。腳本中使用的語法與命令行調(diào)用中使用的語法相同,命令行調(diào)用提供了一種將探測放入特定操作的快速方法,可以在屏幕上顯示結(jié)果。命令行可以幫助測試和調(diào)試腳本;您可以在將探測添加到更復(fù)雜的集合之前交互式地嘗試探測,了解可用于驅(qū)動其他探測的輸出格式。

微軟現(xiàn)在已經(jīng)將DTrace移植到Windows上,構(gòu)建在開放的DTrace代碼和規(guī)范的基礎(chǔ)上,增加了特定的Windows特性,支持對Windows事件跟蹤(ETW)、Windows系統(tǒng)調(diào)用和Windows進程id的跟蹤。雖然Windows具有與Unix和Unix派生的操作系統(tǒng)非常不同的體系結(jié)構(gòu)模型,但是您應(yīng)該發(fā)現(xiàn)DTrace可以很好地與Windows配合使用,特別是在使用特定于Windows的跟蹤功能時。

雖然Windows有自己的ETW跟蹤工具,但它們是靜態(tài)的,需要構(gòu)建到您的代碼中。DTrace是動態(tài)的,它的優(yōu)點是能夠在運行時工作,允許您快速地測試和跟蹤運行中的代碼。甚至可以快速測試生產(chǎn)系統(tǒng),獲得調(diào)試問題所需的詳細信息,完成后刪除DTrace工具和配置。

用戶通過DTrace命令與DTrace交互,DTrace命令是DTrace引擎的通用前端。D腳本被發(fā)送到DTrace內(nèi)核組件執(zhí)行,有時稱為DIF虛擬機。Traceext。sys是微軟添加的一個新的內(nèi)核擴展驅(qū)動程序,它允許Windows公開DTrace提供跟蹤所依賴的功能。

安裝DTrace不像安裝傳統(tǒng)的Windows應(yīng)用程序那么容易。這是一個非常低級的工具,需要重新啟動幾次才能運行。首先從Microsoft下載適當(dāng)版本的DTrace。目前支持的版本只在windows10 2004或更高版本上運行;1904年和1909年的早期存檔版本仍然可以下載,但不再支持。

下載后,安裝DTrace應(yīng)用程序,然后使用BCDEdit將其添加到Windows啟動配置中。你可能需要關(guān)閉BitLocker,如果你使用它來保護你的電腦的開機配置,否則你可能需要在下次開機時輸入你的BitLocker密鑰。

接下來,將您的Windows PATH環(huán)境變量設(shè)置為引用DTrace,并為任何調(diào)試符號添加一個新的環(huán)境變量。這些文件將在需要時從微軟下載。最后,確保您已經(jīng)設(shè)置了虛擬安全模式來跟蹤Windows內(nèi)核邊界。

參見:讓W(xué)indows 10以你想要的方式工作的20個專業(yè)提示(免費PDF)(TechRepublic)

許多開發(fā)人員在虛擬機上進行測試,只要DTrace支持嵌套虛擬化,它就會在VM中運行。您可以在PowerShell中實現(xiàn)這一點,啟用虛擬化擴展,然后重新啟動主機PC。

一個重要的警告是,為了讓DTrace正常工作,您需要以本地管理帳戶的身份運行,所以如果您使用Microsoft帳戶登錄到Windows 10,請準備好添加一個新的本地用戶。當(dāng)您更新Windows Insider構(gòu)建時,請記住通過BCDEdit重新啟用DTrace。

準備好運行DTrace之后,您可以使用命令行單行工具查看可用的探測并嘗試簡單的查詢,從而掌握D命令的結(jié)構(gòu)。一旦您熟悉了這些,您就可以開始構(gòu)建自己的腳本了。Microsoft在其DTrace GitHub頁面上提供了一節(jié)樣例腳本,它可以幫助您開始跨應(yīng)用程序的跟蹤。值得花點時間讀一本關(guān)于D的書,因為編程跟蹤腳本可能很復(fù)雜,尤其是在很可能異步觸發(fā)探測的情況下。可以從dtrace.org網(wǎng)站上的免費動態(tài)跟蹤指南入手。雖然它在技術(shù)上是為illumos(一個基于Open Solaris的開源操作系統(tǒng))設(shè)計的,但是它的概念和過程可以被轉(zhuǎn)換成Windows。

示例腳本被分成多個組,查看常見的Windows跟蹤場景。您將發(fā)現(xiàn)一些用于查看磁盤操作,另一些用于文件、內(nèi)存和與ETW一起使用。下載代碼并在您的系統(tǒng)上運行它,然后針對您的特定需求創(chuàng)建自己的版本。

結(jié)果可能很難分析,尤其是當(dāng)你面對充滿數(shù)字的文件時。使用Excel或PowerBI之類的工具來構(gòu)建可視化和探索跟蹤數(shù)據(jù),以幫助理解DTrace結(jié)果,這是一個好主意。

DTrace是一個強大的工具,很高興看到微軟將它引入Windows。但它顯然不適合初學(xué)者,安裝相對復(fù)雜,學(xué)習(xí)曲線陡峭。一旦您掌握了它的D語言,并學(xué)習(xí)了如何選擇和實現(xiàn)探測,那么您就可以研究應(yīng)用程序之間以及與Windows之間的交互方式了。如果您試圖跟蹤一個棘手的錯誤,這是一個工具,打開一個全新的窗口到窗口。

通過閱讀這些Windows和Office提示、技巧和備忘單,成為你公司的微軟內(nèi)部人。星期一和星期三送貨


免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!

精彩推薦

圖文推薦

點擊排行

2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。