現在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社群合併程式碼更改,而原始碼也可以在微軟維護的第三方原始碼網站獲得。


Advertisement

更多 iThome相關內容