版本資訊
本主題提供 WinDbg 新功能的相關信息。 舊版已發行為 WinDbg 預覽版。
1.2409.17001.0
協助工具修正
我們已修正使用螢幕助讀程式與 WinDbg 互動時的幾個問題。
錯誤修正
- 已修正卸載 WinDbgX 會防止啟動傳統 WinDbg 的問題。
- 已修正在啟動期間出現后,WinDbgX 會重設大小的問題。
時間旅行偵錯 (TTD)
- 已更新為 1.11.429 版。
- 如需詳細資訊,請參閱 TTD 版本資訊 。
1.2407.24003.0
新功能
新的 JavaScript 腳本提供者
我們現在會根據 V8 提供新的回溯相容 JavaScript 提供者。 因此,arm64 主機現在可以使用 JavaScript 擴充功能。 arm64 UI 現在也會預設為arm64引擎。
預設會在所有架構上啟用新的提供者。
在 x86 和 x64 上,可以透過 .veighton
和 .veightoff
命令開啟/關閉。
在未來的某個時間點,將會移除這些命令和舊版 JavaScript 提供者。
透過延伸模組庫和數據模型的UI擴充性
具有擴充功能庫指令清單的調試程式延伸模組現在可以將圖示新增至 WinDbg 功能區的新 [延伸模組] 索引標籤。 按兩下這些圖示會觸發指定數據模型查詢的視覺效果。 透過將檢視新增至擴充庫指令清單,可達成此擴充性的方法。 檢視會將名稱和圖示的結合系結至數據模型查詢和檢視種類。 您可以在擴充功能庫指令清單檔中找到 檔
已將例外狀況參數新增至擴充功能庫例外狀況載入觸發程式
資源庫擴充功能現在可以根據特定的例外狀況參數值有條件地載入。 如需詳細資訊,請參閱 擴充功能庫指令清單檔 。
永遠不要下載特定符號的組態選項
您現在可以略過指定影像的下載符號。
在組態檔的 DbgX.xml
區Symbols
段中,您可以新增符號清單:
<Namespace Name="DisabledSymbolsDownload">
<Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>
在調試程式中,您可以執行 dx Debugger.Settings.Symbols.DisabledSymbolsDownload
來檢視目前未下載的符號清單。
您也可以直接從除錯程式變更清單,如下所示:
dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()
顯示 SourceLink 資訊的新命令
為了協助偵錯以內嵌SourceLink為基礎的下載來源問題,您現在可以使用 命令!lmsourcesinfo module
來顯示調試程式將使用之SourceLink的內容。
一般UI改善
我們已對模組視窗或堆疊視窗等視窗進行一些小幅改善:
- 您現在可以按下標題列來排序網格線檢視。
- 有更多滑鼠右鍵動作可供使用。
- 堆疊視窗會在適當時將框架顯示為內嵌。
錯誤修正
- 已修正不會透過 HTTP 下載大於 4GB 的 PDB 的問題。
- Edge 是這類 PDB 的範例。
- 已修正調試程序認證提供者中的快取問題(現在它會快取每個月臺的認證)。
- 已修正擴充功能庫載入觸發程式評估期間的錯誤。
- 已修正可能導致當機的 Bug
!address
。 !heap -a -a
現在應該能正常運作。
TTD
如需 1.11.410 版,請參閱 TTD 版本資訊 。
1.2402.24001.0
新功能
即時Linux偵錯
您現在可以即時偵錯 Linux 程式。 如需詳細資訊,請參閱下列主題:
在可預見的未來,WinDbg 用戶端仍然需要 Windows,因為 WinDbg 不會在 Linux 上執行。
使用時間移動偵錯記錄執行子集
您現在可以指定要記錄的模組清單,以將 TTD 焦點放在您關心的模組上。 這可大幅降低錄製額外負荷。 若要使用此選項,只需在 [設定和記錄] 對話框中檢查 [記錄執行子集],然後指定您想要記錄的模組。 (請參閱 下面的已知問題 )。
為了更精細的控制,您可以使用新的進程內錄製 API 來精確地錄製程式。 請參閱我們的 範例程式代碼 和 檔。
精簡註冊視窗
新的快取器視窗看起來就像命令的 r
輸出。 請注意,尚不支援從新的註冊視窗進行編輯。
將 [輸入值] 的新參數 e
放入記憶體命令中
記憶體命令中的 e
[輸入值] 現在支援實體位址,就像 [顯示記憶體] 命令一樣 d
。 請注意,這些選項只有在核心模式中才支援:
選項 | 描述 |
---|---|
/p |
使用實體記憶體位址進行顯示。 Range 所指定的範圍會取自物理記憶體,而不是虛擬記憶體。 |
/p[c] |
與 /p 相同,不同之處在於會讀取快取的記憶體。 必須包含 c 周圍的括號。 |
/p[uc] |
與 /p 相同,不同之處在於會讀取未快取的記憶體。 必須包含 uc 周圍的括號。 |
/p[wc] |
與 /p 相同,不同之處在於將會讀取寫入合併的記憶體。 必須包含 wc 周圍的括號。 |
如需詳細資訊,請參閱 e、ea、eb、ed、eD、ef、ep、eq、eu、ew、eza (Enter Values)。
錯誤修正
- 支援在Linux偵錯中解脫 Rust 名稱
- CLR 偵錯的改善
- 新增強制混合模式堆疊步行 CLR 畫面的功能
- 已
ForceMixedModeStackWalker
新增至config.xml
或DbgX.xml
的設定。 !forceclrmixedmodeunwind
新增一次性調查的命令,或者如果您無法變更組態設定,則為 。
- 已
- 新增強制混合模式堆疊步行 CLR 畫面的功能
- Linux 上 CLR 偵錯的一般改善
- 修正與LinuxKernel.js和每個 cpu 變數相關的許多問題
- 已將命令新增
!runq
至 LinuxKernel.js,以便傾印每個 CPU 核心排程器執行佇列(類似於 Linux 損毀公用程式的runq
命令) - 修正LinuxKernel.js中各種命令以對應至核心變更:在較新的核心中,定時器樹狀結構會使用快取的 RB 節點,而不是原始的 RB 節點;在最近的核心中,all_bdevs清單已消失,因此區塊裝置現在會改為從超級鎖定中走開(blockdev_superblock)
- 已將命令新增
- 各種 natvis 修正,以更類似最新版本的 Visual Studio 運作
- 偏好 sourcelink 與舊版 sourceinfo
- 已新增
!lmsourcesinfo <module>
命令以顯示來自 pdb 的 sourcelink 數據流(以協助偵錯 sourcelink 的問題)。
- 已新增
已知問題
指定要以 TTD 記錄的模組清單時,指定多個模組無法在此版本中運作。
1.2308.2002.0
許多 Bug 修正和小型改善。
1.2306.12001.0
許多 Bug 修正和小型改善。
1.2303.30001.0
ARM64 上的時間移動偵錯
WinDbg 不僅會在 ARM64 上原生執行,也啟用原生 ARM64 進程的時間移動偵錯 (TTD)。 您現在可以記錄原生ARM64進程(以及 x86 和ARM32進程),並輕鬆地進行偵錯,即使是在 x64 電腦上也一般。 目前還無法使用ARM64裝置上的 x64 或 x64 啟用的 x64 ARM64EC 或 x64 進程支援。
整體 TTD 效能也已改善,記錄額外負荷大幅降低,用於使用常見 SIMD 指示的程式。 總共優化了 65 個新指令,範圍從 MMX 到 SSE 4.2、AVX 和 AVX2。
模棱兩可的斷點解析
模棱兩可的斷點可讓調試程式在特定斷點表達式解析為多個位置的案例中設定斷點。 如需詳細資訊,請參閱 模棱兩可的斷點解析。
1.2107.13001.0
Regex 搜尋
WinDbg 預覽搜尋現在包含使用正則表示式進行搜尋的選項 - Regex。 在您想要搜尋的視窗中啟用 Regex,方法是執行 Ctrl+F,然後切換搜尋方塊旁加上 .*
標籤的按鈕。
受限制模式
受限制模式是選擇性設定,可以限制 WinDbg Preview 只能啟動遠端偵錯會話和傾印檔案的偵錯會話類型。 如需詳細資訊,請參閱 WinDbg - 受限制模式。
陰影式變數支援
在舊版中,WinDbg 在嘗試評估 #??) 或顯示變數時擲回「模棱兩可的符號」錯誤,該變數會與範圍中的另一個變數共用其名稱。 Windbg 現在會藉由附加 @n
至變數名稱來釐清共用相同名稱的變數。 例如:foo@0
、foo@1
此變更也會反映在 [局部變數] 視窗中。 先前只會顯示範圍中最接近的變數。
1.2104.13002.0
智慧型數字選取和搜尋
WinDbg Preview 的便利生產力功能是能夠在命令視窗中偵測模式。 若要這樣做,請選取任何文字,以及反白顯示該文字的所有其他實例。 由於此醒目提示在查看記憶體模式時很有用,因此現在也會反白顯示其他基數中的對等數位,無論數位是以十六進位、十進位或科學表示法格式化。 如需編號配置的詳細資訊,請參閱 n (設定數位基底)。
範例:
選取 0x000001e2fb3f6160
時,不論格式為何,所有其他實例都會反白顯示。
此功能也適用於半暫時醒目提示。 Ctrl + 按兩下數位,以反白顯示其所有實例。 您可以透過這種方式追蹤命令歷程記錄中的多個重要數位(若要清除醒目提示,請再次按 Ctrl + 按兩下數位)。 最後,此功能也適用於使用 Ctrl + F 搜尋數位時。
原始程式碼延伸存取
來源路徑命令 .srcpath、.lsrcpath(設定來源路徑) 已更新為包含新的標籤 – DebugInfoD。 如需詳細資訊,請參閱 原始程式碼延伸存取。
數據模型中 WOW 進程的主機和客體狀態
從 64 位內容偵錯 32 位 WOW 進程時,用戶現在可以存取數據模型中的主機和來賓狀態。
32 位客體狀態範例:
dx @$curprocess.Environment
dx @$curthread.Environment
dx @$curthread.Stack
64 位主機狀態範例:
dx @$curprocess.NativeEnvironment
dx @$curthread.NativeEnvironment
dx @$curthread.NativeStack
Javascript 偵錯改善
在UI中載入的 Javascript 現在可以使用 .scriptdebug 命令直接在控制台內進行偵錯。 如需詳細資訊,請參閱 JavaScript 調試程式腳本 - JavaScript 偵錯。
協助工具的改進
透過 WinDbg Preview,我們致力於建置對殘障工程師的包容性調試程式,我們會持續改善輔助功能。 已進行下列改進。
- 命令視窗連結現在可以透過鍵盤按兩下 (Shift+Enter)
- 改善主功能表的鍵盤流覽
- 已改善功能區的鍵盤流覽
- UI 元素的對比增加
時間旅行調試程式的新「覆寫」數據存取類型
時間移動調試程式 (TTD) 現在提供「覆寫」數據存取類型。 記憶體查詢,例如 dx @$cursession.TTD.Memory()
現在有顯示寫入舊值的額外數據行。
其他修正、改善和更新
- 已新增功能,以在核心偵錯主機和目標都是USB 3.1控制器時,自動偵測並套用USB 3.1硬體問題的因應措施。
- 已新增UI快捷方式:Ctrl + Shift + 按下 DML 連結,將它複製到剪貼簿
1.0.2007.01003
時間軸書籤
將WinDbg 中重要的 Time Travel 位置加上書籤,而不是手動將位置貼到記事本。 書籤可讓您更輕鬆地檢視追蹤中相對於其他事件的不同位置,並標註它們。
您可以提供書籤的描述性名稱。
透過 [檢視時程>表] 中提供的 [時程表] 視窗存取書籤。 當您將滑鼠停留在書籤上方時,它會顯示書簽名稱。
您可以選取並按住書籤,或以滑鼠右鍵按下書籤,以移至該位置、重新命名或刪除書籤。
模組視窗
新的視窗會顯示模組及其相關信息,可透過 [檢視] 功能區取得。 其中顯示:
- 模組的名稱,包括路徑位置
- 已載入模組的位元組大小
- 模組載入的基位址
- 檔案版本
即時偵錯中可用的線程名稱/描述
從 SetThreadDescription 設定的線程名稱現在可在執行即時使用者模式偵錯時使用。 線程名稱可使用 「~」 命令或調試程序數據模型。
0:000> ~
0 Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
7 Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
8 Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
9 Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen
0:000> dx @$curthread
@$curthread : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e) [Switch To]
Id : 0x5ffc
Name : Hello world!
Stack
Registers
Environment
可攜式 PDB 支援
已新增可攜式 PDB 支援。 可攜式 PDB (Program Database) 格式描述 Common Language Infrastructure (CLI) 語言編譯程式所產生的偵錯資訊編碼方式,以及調試程式和其他工具所使用的資訊。 如需詳細資訊,請參閱 可攜式 PDB 符號。
其他變更和錯誤修正
- WinDbg 現在支援 AMD64 和 Linux 核心傾印偵錯。
- 時間移動記錄增強功能和其他修正。
1.0.1912.11001
TTD 時程表 - 我們已新增視窗,以顯示追蹤中重要事件的視覺表示:例外狀況、斷點、函數調用和記憶體存取。 時間軸會自動開啟並顯示例外狀況(如果有的話)和斷點。 如需詳細資訊,請參閱 WinDbg 預覽 - 時程表。
切換至預設的視窗 Chrome - 我們所使用的自定義視窗 Chrome 雖然更美觀,但會導致一些值得注意的使用者調整和重設大小問題,因此我們目前已選擇將其移除。
檔案功能表改進的鍵盤流覽 - 檔案選單現在更容易使用鍵盤流覽。
其他變更和錯誤修正
- 當您的目標正在執行時,現在會停用堆疊和局部變數視窗,而且沒有目標時不會顯示「未指定的錯誤」。
- 已將 [服務] 資料行新增至 [附加] 對話框,以輕鬆尋找哪些服務正在執行。
- 已修正當啟動具有自變數的應用程式時,導致架構偵測無法運作的錯誤。
- 載入私人符號時,反組譯碼視窗已改善反組譯碼。
- jsprovider.dll現在會自動載入,因此我們已從腳本功能區移除 [載入 JSProvider] 按鈕。
1.0.1908.30002
改善 TTD 呼叫物件 - 呼叫查詢 現在包含參數名稱、類型和值。 在查詢函數調用的追蹤時,您可以取得完整型別參數及其值,讓您輕鬆地依參數篩選結果。
支援 Open Enclave - WinDbg 預覽版現在可以偵錯 Open Enclave (OE) 應用程式以取得詳細資訊,請參閱 開啟記憶體保護區偵錯。
ELF 核心傾印 - 在支援 Open Enclave 的一部分,WinDbg 可以從記憶體保護區和 Linux 應用程式開啟 ELF 核心傾印和二進位檔,以及 DWARF 符號(目前不支援 DWARF 5)。 從非 Windows 應用程式開啟核心傾印時,基本視窗和命令應該都能正常運作,但大部分的擴充功能和 Windows 特定命令都無法運作。 ELF 和 DWARF 檔案會遵循此處定義的金鑰慣例,從符號伺服器下載。 記憶體保護區是唯一支援的案例,但我們願意就開啟其他 Linux 核心傾印提供意見反應。
TTD 檔案格式變更 - 我們已針對中斷向前相容性的 TTD 追蹤,對檔格式進行重大更新。 舊版 WinDbg 預覽版將無法開啟使用 WinDbg Preview 這個 (未來) 版本所記錄的追蹤,但這個 (和未來) 版本將能夠開啟新的和舊的追蹤。
其他變更
- TTD 現在會使用 64 位引擎進行索引編制,以及重新執行的適當調試程式引擎位,以將索引編製索引時的潛在記憶體問題降到最低,並在重新執行時發生 SOS 問題。
- 在沒有任何參數的情況下執行 『dx』 現在會顯示根命名空間,以方便流覽。
- 您現在可以透過 [設定] 功能表修改預設符號和來源快取位置。
- 改善錄製AVX-512的支援(AVX-512的錄製會導致比正常速度慢。
- 我們已啟用 離線授權。
1.0.1905.12001
SymSetDiaSession 錯誤風險降低 的改善 - 我們上個月的修正,以減輕將 DbgHelp 插入程式的應用程式所造成的錯誤,在某些案例中仍然無法運作。 我們已改善此問題,並將繼續監視此錯誤的意見反應。
輔色自定義 - 許多案例都需要開啟數個 WinDbg 實例,而且在兩者之間來回移動可能會令人困惑,並花一些時間找出哪一個是「正確」的實例。 我們新增了變更藍色輔色的功能,以協助以視覺方式區分會話,並讓它們之間的交換變得更容易。
只要選取 [檢視] 功能區,然後在最後一節中選取 [輔色] 選項。 當未來的會話從最近的目標啟動時,輔色將會保存為目標工作區的一部分。
來源令牌化改善 - 來源視窗現在支援將 Rust 來源檔案標記化,以及C++ SEH __try/__except/__finally/__leave。
協同程式改善 - 改善協同程式局部變數和特定優化變數的支援。
默認符號和來源快取設定 - 已將選項新增至 [偵錯設定] 底下的 [設定 ] 功能表,以變更符號的快取位置。 注意 - 造成此空白會導致來源載入失敗的已知問題。 我們將新增驗證,以防止在未來版本中發生此情況。
-pv 修正 - 修正了在某些情況下可能會防止 -pv(非侵入性附加)運作的 Bug。
1.0.1904.18001
針對 SymSetDiaSession 錯誤 修正 - 我們曾有過一段時間的錯誤,導致在某些情況下無法啟動 WinDbg Preview。 在載入 DbgHelp 之前,有一些外部應用程式嘗試將 DbgHelp 版本插入我們的程式。 其中有些是使用含有遺漏功能的 DbgHelp 版本,當我們嘗試使用這些功能時,這會導致此錯誤。 我們已新增此問題的修正程式,如果仍有發生此問題的情況,將會進行追蹤。
字型控制器 - 我們已新增用於控制字型和字型大小的設定。 有兩個不同的設定,一個用於文字視窗(單空間視窗,例如反組譯碼、來源、命令等),另一個用於工具視窗(局部變數、堆疊等)。 我們未來將會更新的這些選項仍有一些不受這些選項影響的區域。
醒目提示改善 - 命令視窗中文字的持續醒目提示現在也會反白顯示來源和筆記視窗中的文字。
來源載入改善 - 我們已變更加載來源檔案的運作方式。 先前開啟來源檔案時,無法執行其他命令或無法預測的引擎作業。 我們已變更加載發生的位置,以啟用更佳的平行處理原則,以及更可靠的來源開啟作業取消。
其他變更與錯誤修正:
- 已將 [移至反組譯碼] 新增至來源視窗的操作功能表。
- 已將複選框新增至反組譯碼視窗中的 [遵循目前的指示]。
- 已修正導致命令視窗在輸出大量文字時執行緩慢的錯誤。
- 已變更頁面向上和向下頁面索引鍵,以執行類似Visual Studio。
- 在來源視窗中開啟 ASM 檔案時,現在會有基本批注、字串和指示詞醒目提示
1.0.1812.12001
此版本包含這些更新。
調試程序數據模型C++標頭 - 有新的C++標頭 DbgModel.h,包含在 Windows SDK 中,以透過C++擴充調試程序數據模型。 您可以在調試程序數據模型C++概觀中找到詳細資訊。 此版本包含新的延伸模組,可將一些更多「API 樣式」功能新增至調試程序數據模型,以透過 『dx』 命令、JavaScript 和新的 DbgModel.h 標頭來存取。 此延伸模組會延伸數據模型,以包含透過 Debugger.Utility.Code 命名空間執行元件和程式代碼執行的知識,以及透過 Debugger.Utility.FileSystem 命名空間的本機文件系統。
綜合型別擴充功能 透過這個新的 API 延伸模組 ,我們在這裡的 GitHub 存放庫上有新的範例 - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes。 此 JavaScript 延伸模組會讀取基本的 C 頭檔,並定義標頭中所定義結構和等位的綜合類型資訊。 透過 dx 命令,記憶體就可以以結構化方式檢視,就像您擁有具有這些類型的類型資訊 PDB 一樣。
其他變更與錯誤修正:
- WinDbg Preview 現在會更聰明地處理在逐步執行時將來源視窗或反組譯碼視窗帶入前景。
- 重新排列 WinDbg 預覽的視窗標題,以在核心偵錯時在開始取得更重要的資訊。
- 命令視窗中的替代背景對比應該稍微明顯一點。
1.0.1810.2001
此版本包含這些更新。
- 從 [檔案] 選單或 [常用] 功能區存取的 [新增設定] 對話框。
- [事件和例外狀況設定] 對話框。 此功能表會變更調試程式如何處理事件和例外狀況,相當於 'sx' 命令或 WinDbg 的事件篩選對話方塊。 選取 主功能區上的 [設定 ],然後按下左側的 [事件和例外狀況] 來管理這些事件。
- 改善效能更佳的TTD索引器。 這會增加編製 TTD 追蹤檔案索引的效能,讓編製索引程式更快(介於 2x-10x 之間),同時讓索引檔更小(~50%)。 效能改善對於大小超過 4 GB 的追蹤而言最為明顯,或是使用具有許多 CPU 核心的計算機時(8+)。 新的索引器可讓您更可行地偵錯非常大的追蹤 (50GB+)。
- 用於指定架構的新 debugArch 啟動旗標。 WinDbg Preview 會嘗試以正確的位對目標啟動調試程式引擎,以更好地支援偵錯 Managed 程式代碼。 在某些情況下,它無法判斷正確的位,或者您可能想要覆寫它決定的內容。 使用 -debugArch x86|amd64 來控制調試程式引擎的架構。
其他變更與錯誤修正:
- 已修正會導致全螢幕調試程序出現並開啟浮動視窗的 Bug。
- 已修正會導致不小心清除符號選項的 Bug。
- 從最近的目標啟動時,現在會保留命令歷程記錄。
- 在資料模型視窗中,您現在可以編輯值。
- 未編制索引的 TTD 追蹤現在會更清楚,它們未編製索引。
- 改善局部變數視窗的效能
- 已新增功能區按鈕,以將命令窗口記錄儲存至檔案。
- 新增了 。 SelectMany(<projection>) 到預設的 LINQ 方法集。
1.0.1807.11002
此版本包含這些更新。
自動儲存和載入斷點。 這是取代工作區的第一個步驟。 我們會藉由啟用斷點的儲存和載入,開始該路由。 啟動您先前從 [檔案] 功能表中的 [最近使用] 索引標籤偵錯的專案,現在會從該會話載入斷點。 此計劃是擴充此功能,以跨會話保留詳細資訊。 硬體斷點 (ba) 和其他各種斷點的屬性,例如線程和處理特定內容,以及條件目前並未儲存。
次要變更和錯誤修正:
- 已新增命令行選項 -x、-xe、-xd、-xn 和 -習,以控制例外狀況和事件的處理。 這些命令行選項的行為就像其命令計數器元件一樣。
- 附注視窗現在支援粗體、底線和斜體格式。
- 已修正某些縮放和捲動問題。
- 選取命令、記憶體、來源或反組譯碼視窗中的文字,現在將會在選取文字的其他實例上顯示淺色醒目提示。
- 已修正中斷符號載入會導致會話其餘部分的符號載入失敗的錯誤。
- NatVis 現在會在重新啟動工作階段時正確重載。
1.0.1805.17002
此版本包含這些更新。
新的反組譯碼視窗 - 反組譯碼窗口現在包含:
- 盡可能向上或向下捲動會持續載入更多反組譯碼。
- 數位、程式代碼位址和opcode的語法醒目提示。
- 選取程式代碼符號會將反組譯碼視窗跳至該位置。
- 將滑鼠停留在數位上方會顯示工具提示,可將該數字轉換成其他基底。
- 表示函式開頭的標頭。
更快速的來源視窗 - 來源視窗 已更新為更快且更有資源效率。
次要變更和錯誤修正:
- 已修正符號快取的相關問題
- 已修正當目標未中斷時,切換初始中斷無法使用的一些案例
- 如果您在命令視窗中按索引標籤,但沒有任何可用,游標現在會留在輸入字段中
- WinDbg 預覽版現在會在開啟 CAB 檔案時自動偵測位
1.0.1804.18003
此版本包含這些更新。
符號狀態和取消改善 - 調試程式有時間顯示 BUSY 載入符號,而且很難判斷它正在做什麼,以及為何未啟用 !sym 雜訊。 我們已更新 WinDbg Preview,以在載入符號時有一些更好的溝通,以協助針對任何問題進行疑難解答。 除了輕鬆查看確切的情況之外,我們也做了一些變更,應該讓取消符號更可靠,而且 [記錄] 視窗會包含一些在啟用 !sym 嘈雜時通常會輸出的詳細數據。 如果您按下 [檢視 -> 記錄],您就會取得完整的嘈雜符號載入輸出,而不需要開啟它,並嘗試重載符號。
實驗筆記視窗 - WinDbg 預覽版現在有一個用於記事的視窗。 只要按 [檢視 ] -> [附注] 加以開啟。 如果您複製/貼上該連結,則會保留 DML 連結,但仍會像命令窗口一樣運作。 當視窗開啟時,您也可以從 [附注] 功能區儲存並載入筆記檔案。
實驗性較快的來源視窗 - 為了協助改善 WinDbg 預覽的效能,有一個實驗性的新來源視窗會更有效率。 操作功能表和語法醒目提示仍有一些差距,但我們希望讓每個人在完成意見反應之前先試用它的選項。 執行$UseFastSourceWindow以使用它。 如果您想要回到舊版,請執行 $UseMonacoSourceWindow。 此設定會在工作階段之間保留,您必須關閉並重新 開放原始碼 視窗,才能取得新版本。
JSProvider API 1.2 版 - 針對宣告對 API 1.2 版支援的 JavaScript 延伸模組:
- 任何具有 .compareTo 方法的物件,其結束腳本時都會有自定義比較子(比較運算符將在 DX 評估工具和其他位置運作:例如:IModelObject::Compare)
- 任何具有 .equals 方法的物件,其結束腳本時都會有自定義相等運算符(== 和 != 在 DX 評估工具中和其他地方運作:例如:IModelObject::IsEqualTo)
- 輸入腳本的原生或數據模型物件會具有 .compareTo 和 .equals,可存取任何自定義比較子或自定義相等實作。
次要變更和錯誤修正:
- .server 現在會列出完整功能變數名稱,以在簡短名稱發生網域問題時更容易使用。
- Ctrl+G 現在可在來源視窗中運作。
- 已將網址列新增至反組譯碼視窗。
- WinDbg 預覽版現在會以更預期的方式處理_NT_SYMBOL_PATH。
- 已新增 -server 命令行選項。
- TTD 數據模型查詢現在可以逐漸顯示,因此如果您中斷,您仍然會看到一些結果。 這項功能仍然是實驗性的,也是選擇性的。 執行
dx @$cursession.TTD.AsyncQueryEnabled = 1
以啟用它。 - 'dps' 命令現在具有參考的來源檔案連結。
1.1801.19001.0
此版本包含這些更新。
文字醒目提示 - 您現在可以直接在調試程式中反白顯示所選文字的所有實例。 若要使用此功能,只要在命令視窗中選取一些文字,然後在命令功能區中選取 [醒目提示],或按 CTRL+ALT+H。 在已醒目提示的文字上使用其中一項,將會移除醒目提示。
如果您要使用指令,可以使用「$hl」 命令:
$hl ["someValueHere"]
- 醒目提示提供文字(如果已醒目提示則取消醒目提示)
$hl clearAll
– 清除所有醒目提示的專案
$hl caseSensitive [1|0]
- 將醒目提示比對設定為區分大小寫或不區分大小寫 (預設值不區分大小寫)
此版本也包含一些次要錯誤修正。
1.1712.15003.0
此版本包含這些更新。
TTD 記憶體查詢 - 您現在可以查詢 TTD 以取得記憶體存取,類似於您今天查詢呼叫的方式。 這可讓您尋找存取特定記憶體範圍的所有讀取、寫入和執行。
讀取和寫入範例: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")
唯一的執行範例: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")
設定變更 - WinDbg 預覽現在會自動儲存會話之間的設定,包括您的符號路徑和來源路徑。
JavaScript 改善
- JavaScript 中的64位數位和數值現在包含可允許真實64位模數運算的模數方法。
- JavaScript 中定義的物件現在可以實作自定義的可比較或等同概念,其可在 dx 中使用標準C++運算符或在 LINQ 作業中運作。 為了利用這項功能,腳本必須在 initializeScript 陣列中宣告它支援新版主機 API 的宣告,方法是插入“new host.apiVersionSupport(1, 2)” 記錄。 完成之後,您可以在任何 'dx' 或數據模型視窗 LINQ 查詢中使用這些函式。 如果方法實作 .compareTo(其他),則會比較 (比較運算符在 dx 和 LINQ 中運作)。 如果方法傳回負值,例如 「this < other」。。 如果方法傳回零,“this == other”。 如果方法傳回正值 「this > other」。 如果方法實作 .equals(other),它就等於 (== 在 dx 和 LINQ 中運作)。 方法必須傳回 true 或 false。
次要變更和錯誤修正:
- 已修正在開機偵錯期間堆疊和局部變數視窗無法運作的錯誤
- 更新 LM 的輸出,以更準確地報告 ProductVersion 和類似的欄位
- 在 TTD 工作階段期間啟用 [退步] 按鈕
- 已新增 -lsrcpath 的支援
- 局部變數、監看式和模型視窗中的標頭現在不會在向下捲動時消失
- 當 ALT+Tabbing 回到 WinDbg 預覽版時,命令視窗會正確保留游標位置
- 已新增 CTRL+ALT+V 快捷方式以切換詳細資訊模式
- 您現在可以選取並按住命令視窗索引標籤或以滑鼠右鍵按下命令視窗索引標籤,然後選擇 [關閉自動捲動] 來停用命令視窗的自動捲動
- 您現在可以透過啟動可執行檔進階頁面對子進程進行偵錯。
1.0.14.0
此版本包含這些更新。
改善進程伺服器體驗 - [檔案] 選單中的新通知,可顯示您已連線的進程伺服器,並已新增與其互動。 在這些變更的一部分,在結束偵錯會話時,進程伺服器連線將會保存,而且可以在 [檔案] 功能表中中斷連線。
[檢視] 功能區中的新預先設定版面配置選項 - [檢視] 功能區 中有新的 [版面配置] 選項。 目前有三個版面配置:預設值、一個著重於反組譯碼,另一個是最小配置。
時間移動偵錯功能區 - 有增強的時間移動功能區會在偵錯時間移動偵錯追蹤時顯示。
JavaScript 腳本 的元數據 - JavaScript 延伸模組現在可以傳回屬性和其他建構的元數據。 這表示延伸模組可以提供說明字串、指出值的顯示基數等等。 元數據是透過 Symbol.metadataDescriptor 的存在或對 host.metadata.defineMetadata 的明確呼叫,將元數據描述元放在對象上來提供。 函式會傳回、Iterated 值和其他值內容,可以透過host.metadata.valueWithMetadata傳回其值的元數據。
JavaScript API 更新 - 對 JavaScript 提供者內的 API 進行一些潛在的來源層級中斷性變更(包括原生物件的新投影方法和屬性)。 現有的延伸模組不會看到任何潛在的中斷性變更,而不會指出它們支援新版本的 JsProvider API。 使用支援 1.1 版的宣告,將 host.apiVersionSupport 記錄放在 initializeScript 所傳回的陣列中,以表示對新 API 版本的支援。 或? .. 具有值,表示支援1.1版。
API 1.1 版的變更包括:
- host.getModuleSymbol 和 host.getModuleType 如果找不到符號,而不是擲回例外狀況,則會傳回 null。
- 除了 .targetLocation 之外,所有原生物件都有地址屬性。 如果對象沒有位址,存取 屬性時將會擲回例外狀況。
- 所有原生物件都有新的 .getObjectValue 和 .setObjectValue 方法,以存取物件上可能與對象上名稱 JavaScript 位置衝突的屬性(例如:'address') 。
其他 JavaScript 變更
- JavaScript 延伸模組現在可以透過 Object.defineProperty 和 delete 運算符,在數據模型物件上新增和移除屬性。 將 JavaScript 類別新增或註冊為父模型或類型簽章仍然是操作物件模型的強式慣用方式。
- JavaScript 延伸模組現在可以透過新的 host.setModuleSymbol API 修改偵錯目標模組內的全域變數。
- 所有位於 64 位連結庫類型的數學函式(例如:.add、.subtract、.multiply、.divide 等等...)現在也存在於 JavaScript 數位上。
- JavaScript 函式和屬性現在可以傳回透過自定義封送處理列舉的值。 函式或屬性存取子可以傳回 host.typeSystem.marshalAs(value, type...), 以喚起這類自定義封送處理。
- 除了行/資料行位置之外,腳本調試程式中的斷點命令現在可以中斷函式名稱。
- JavaScript 延伸模組中的類型物件可透過 .containingModule 屬性存取其包含的模組。
次要變更和錯誤修正:
- 已修正條件式功能區索引標籤的格式設定,以較不混淆。
- 重新處理 DML 以更嚴格地剖析以改善效能。
- CTRL+F 效能和行為的各種修正。
- 在嘗試使用TTD之前,在執行未提高許可權時新增警告。
- 已新增 選項以覆寫自動目標位偵測。
- 停用了無法使用各種檔案功能表和功能區選項(例如傾印檔案中的 “Go”。
已知問題:
- SOS 不適用於 x86 追蹤。
1.0.13.0
此版本會新增時間旅行追蹤。 時間移動偵錯,可讓您記錄進程,然後稍後再向前和向後重新執行。 時間移動偵錯 (TTD) 可協助您更輕鬆地偵錯問題,方法是讓您「倒轉」調試程式會話,而不需要重現問題,直到您發現 Bug 為止。 如需詳細資訊,請參閱 時間移動偵錯 - 概觀。
1.0.12.0
此版本是 WinDbg Preview 的第一個版本。 如需 WinDbg 預覽版中可用功能的一般資訊, 以及 WinDbg 的主要功能。