版本資訊
WinDbg 標誌和放大鏡檢視位元細節。
本主題提供 WinDbg 新功能的相關信息。 舊版已發行為 WinDbg Preview。
1.2502.25002.0
新功能
命令視窗 IntelliSense
當第一個輸入字元是 .
(點)、!
(驚嘆號)或 $
(美元符號)時,命令輸入提示將自動顯示建議完成。
您也可以使用命令快捷方式來叫用建議 Ctrl + Space
快照偵錯
在本機 偵錯實時程序時,調試程式可以擷取程序的快照,並透過 [延伸模組] 頁籤上的圖示,在快照與實時程序之間切換。同樣地,調試程式可以透過「連接到遠端調試程式」中的 snapshot:pid=<process pid in hex>
協定字串,附加至程序快照,而不需暫停它。
新的數據模型 API
Debugger.Utility.Symbols.GetTypeInformation
它會傳回與任何傳入對象相關聯的類型資訊。 可選的參數可讓您自動解參照(單一層級)指標,如果您確實想取得任何指標(或參考)的基礎類型。
Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)
建立新的步驟篩選。 它位於與所有斷點建立 API 相鄰的這個命名空間中。
Debugger.State.StepFilters
傳回具有 ID、描述、類型、模式和 IsEnabled 屬性的步驟篩選清單。 在步驟篩選物件上有一個 Remove() 方法。
改善不含 clrcomposition.dll 的CLR偵錯體驗
可轉散發元件 dbgeng.dll
現在對 CLR 框架的堆疊遍歷支援已獲得改善,且不需要 clrcomposition.dll
的存在。
隨機改善
- 更好的 Linux 核心偵錯支援 (特別是針對 6.11+ 核心)
- 支援 ZSTD 壓縮的 KDUMP 頁面
錯誤修正
- 將 SOS 更新為 9.0.557512 版。
- 已修正載入 msdia140.dll時檢查撤銷簽章的效能下降問題。
- 已修正讀取 XSTATE 內容時當機的問題。
- 已修正反組譯碼視窗中已停用的斷點醒目提示,以區分已啟用的斷點
- 已修正關閉浮動工具視窗時的當機
- 修正了有時時間軸視窗目前位置在開啟最近追蹤之後不會填入的問題。
- 已修正反彙編和記憶體視窗在輸入新值後有時無法更新的問題。
- 已修正深色主題中的標題列色彩配置。
- 已修正 [斷點] 視窗中延遲斷點的呈現,其中Location會顯示0x0,而不是建立時輸入的原始運算式。 此外,它有一個獨特的圖示,顯示它未被綁定。
- 已修正 [局部變數/監看] 中以滑鼠右鍵單擊可見項目會導致檢視向上捲動的問題。
- 已修正 natvis 的問題,請參閱 原始錯誤報告。
- 已修正含有郵件
Error getting port connector information
的 kd 調試程式垃圾郵件,請參閱 原始錯誤報告。 - 已修正
gc
在條件為 false 時觸發條件斷點的問題。 - 在偵錯 TTD 追蹤時,現在可以檢視 YMM 和 ZMM 暫存器。
輔助功能修正
- 改善 [局部變數]、[監看式] 和 [斷點] 視窗的鍵盤導航。
- 改善功能區、局部變數、監看式和斷點視窗的視覺可讀性。
- 改善 [局部變數]、[監看式] 和 [斷點] 視窗的螢幕助讀程式可用性
- 在 [局部變數]、[監看式]、[斷點] 中編輯項目時,將盡可能維持先前的鍵盤焦點、選取範圍和捲動。
- 改善對於 Windows 文字縮放的一般支援
一般UI改善
- 新增了一個命令,在命令輸入框和命令輸出窗格之間切換焦點,用以啟用切換標記模式(類似於命令提示字元)。 快捷方式是
Ctrl + M
- 已將 [移至反組譯碼] 功能表項新增至 [斷點] 視窗
- 已在 [反組譯碼] 視窗中新增右鍵選單,用於 [執行至指令]、[設定指令指標]、[移至來源]、[切換斷點]、[切換斷點狀態]
時間旅行偵錯 (TTD)
- 已更新為 1.11.481 版。
- 請參閱 TTD 版本資訊
1.2410.11001.0
重大變更
- dbghelp.dll 動態連結至 msdia140.dll。 這應該只會影響重新發佈 dbghelp.dll 的工具,但不會包含 msdia140.dll。 請注意,msdia140.dll 包含在包含 dbghelp.dll的 nuget 套件中。
錯誤修正
- 已修正擴充功能庫函式別名未系結至載入觸發器的問題
- 收到ERROR_INTERNET_SECURITY_CHANNEL錯誤時,請勿使符號存放區無效。
- 已修正無法針對非英文鍵盤配置在命令視窗中輸入反斜杠的問題。
- 已修正「斷點」、「局部變數」、「監看」視窗中的編輯欄位在文字長度超過整個欄位時無法捲動至游標的問題。
- 對於 CAB 或 ZIP 傾印,會將 *.dmp (單一期間) 優先於 *.*.dmp (雙期間)
輔助功能修正
- [監看/區域視窗] 的鍵盤操作欄位調整功能已修正。
- 改善了 WinDbgX 的整體鍵盤導航功能。
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 提供者。
透過擴充功能庫和數據模型的使用者介面擴充性
具有擴充功能庫指令清單的調試程式延伸模組現在可以將圖示新增至 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 的範例。
- 已修正除錯工具中憑證提供者的快取問題(現在它會為每個站點快取憑證)。
- 已修正擴充功能庫載入觸發器評估期間的錯誤。
- 已修正與
!address
相關的錯誤,此錯誤可能會導致崩潰。 -
!heap -a -a
現在應該能正常運作。
TTD
請參閱TTD 版本資訊,以了解 1.11.410 版。
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 變數相關的問題
- 已在 LinuxKernel.js 中新增
!runq
命令,以便轉儲每個 CPU 的核心排程器執行佇列(類似於 Linux 崩潰工具的runq
命令) - 修正LinuxKernel.js中的各種命令以對應核心變更:在較新的核心中,定時器樹狀結構會使用快取的 RB 節點,而不是原始的 RB 節點。在最近的核心中,all_bdevs 清單已消失,因此區塊裝置現在改為從超級塊遍歷(blockdev_superblock)。
- 已在 LinuxKernel.js 中新增
- 各種 natvis 修正,使其運作得更像最新版本的 Visual Studio
- 偏好 sourcelink 而非舊版 sourceinfo
- 已新增
!lmsourcesinfo <module>
命令來顯示來自 pdb 的來源連結流,以協助偵錯 sourcelink 的問題。
- 已新增
已知問題
指定要以 TTD 記錄的模組清單時,指定多個模組無法在此版本中運作。
1.2308.2002.0
許多 Bug 修正和小型改善。
1.2306.12001.0
許多 Bug 修正和小型改善。
1.2303.30001.0
注意
偵錯工具已從 WinDbg 預覽 更名為 WinDbg。
使用 Windows 偵錯工具發行的舊版除錯器將稱為 WinDbg (傳統版)。
ARM64 上的時間移動偵錯
WinDbg 不僅會在 ARM64 上原生執行,也啟用原生 ARM64 進程的時間移動偵錯 (TTD)。 您現在可以記錄原生ARM64進程(以及 x86 和ARM32進程),並輕鬆地進行偵錯,即使是在 x64 電腦上也一般。 目前仍無法在 ARM64 裝置上使用對 x64 或支援 x64 的 (ARM64EC) 進程的支援。
整體 TTD 效能也已改善,使用常見 SIMD 指令的程式的記錄開銷大幅降低。 總共優化了 65 個新指令,範圍從 MMX 到 SSE 4.2、AVX 和 AVX2。
模棱兩可的斷點解析
模棱兩可的斷點可讓調試程式在特定斷點表達式解析為多個位置的案例中設定斷點。 如需詳細資訊,請參閱 不明确的斷點解析。
1.2107.13001.0
Regex 搜尋
WinDbg 預覽搜尋現在包含使用正則表示式進行搜尋的選項 - Regex。 在您想要搜尋的視窗中啟用 Regex,方法是執行 Ctrl+F,然後切換搜尋方塊旁標示為 .*
的按鈕。
受限制模式
受限制模式是選擇性設定,可以限制 WinDbg Preview 只能啟動遠端偵錯會話和傾印檔案的偵錯會話類型。 如需詳細資訊,請參閱 WinDbg - 受限制模式。
陰影式變數支援
在舊版中,當 WinDbg 嘗試評估 (??) 或顯示 (dx) 名稱與範圍中的另一個變數相同的變數時,會拋出「模稜兩可的符號」錯誤。 Windbg 現在會藉由在變數名稱後附加
來區分共用相同名稱的變數。 例如:foo@0
、foo@1
此變更也會反映在 [局部變數] 視窗中。 先前只會顯示範圍中最接近的變數。
1.2104.13002.0
智慧型數字選取和搜尋
WinDbg Preview 的便利生產力功能是能夠在命令視窗中偵測模式。 若要這樣做,請選取任何文字,該文字的所有其他實例將會被反白顯示。 由於此強調功能在查看記憶體模式時很有用,因此現在也會將其他進制中的等值數字高亮顯示,無論數字是以十六進位、十進位或科學記號方式格式化。 如需了解編號方案的更多資訊,請參閱 n(設定數字基底)。
範例:
選取 0x000001e2fb3f6160
後,所有其他實例都會被反白顯示,無論其格式如何。
WinDbg 命令視窗螢幕快照,已標示出多種數字格式。
此功能也適用於半暫時醒目提示。 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 位置加上書籤,而不是手動將位置貼到記事本。 書籤可讓您更輕鬆地檢視追蹤中相對於其他事件的不同位置,並標註它們。
您可以提供書籤的描述性名稱。
顯示「顯示問候語」應用程式中第一個 API 呼叫範例名稱的新增書籤對話框螢幕截圖。
透過 [檢視>時間軸] 中提供的 [時間軸] 視窗存取書籤。 當您將滑鼠停留在書籤上方時,它會顯示書簽名稱。
WinDbg 時間軸的螢幕快照,其中包含三個書籤,以及顯示書簽名稱的工具提示。
您可以選取並按住書籤,或以滑鼠右鍵按下書籤,以移至該位置、重新命名或刪除書籤。
書籤右鍵點擊彈出選單的螢幕快照,其中包含前往位置、編輯和移除的選項。
模組視窗
新的視窗會顯示模組及其相關信息,可透過 [檢視] 功能區取得。 其中顯示:
- 模組的名稱,包括路徑位置
- 已載入模組的位元組大小
- 模組載入的基位址
- 檔案版本
WinDbg 模組檢視視窗的螢幕快照,顯示五個列出的模組。
即時偵錯中可用的線程名稱/描述
從 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 預覽版 - 時程表。
檔案選單已改進鍵盤導航 - 現在能更輕鬆地使用鍵盤導航檔案選單。
其他變更和錯誤修正
- 當您的目標正在執行時,現在會停用堆疊和局部變數視窗,而且沒有目標時不會顯示「未指定的錯誤」。
- 已將 [服務] 資料行新增至 [附加] 對話框,以輕鬆尋找哪些服務正在執行。
- 已修正當啟動具有自變數的應用程式時,導致架構偵測無法運作的錯誤。
- 當載入私人符號時,反組譯過程在反組譯碼視窗中得到了改善。
- jsprovider.dll現在會自動載入,因此我們已從腳本功能區移除 [載入 JSProvider] 按鈕。
1.0.1908.30002
TTD 呼叫物件的改善 - 呼叫查詢 現在包含參數名稱、類型和數值。 在查詢函數調用的追蹤時,您可以取得完整型別參數及其值,讓您輕鬆地依參數篩選結果。
支援 Open Enclave - WinDbg 預覽版現在可以偵錯 Open Enclave(OE)應用程式。如需詳細資訊,請參閱 Open Enclave 偵錯。
ELF 核心傾印 - 作為支援 Open Enclave 的一部分,WinDbg 可以開啟來自 Enclaves 和 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(非侵入性附著)正常運作的錯誤。
1.0.1904.18001
修正 SymSetDiaSession 錯誤 - 我們收到一些長期存在的錯誤報告,這些錯誤在某些情況下會阻止 WinDbg Preview 的啟動。 在載入 DbgHelp 之前,有一些外部應用程式嘗試將 DbgHelp 版本插入我們的程式。 其中有些是使用含有遺漏功能的 DbgHelp 版本,當我們嘗試使用這些功能時,這會導致此錯誤。 我們已新增此問題的修正程式,如果仍有發生此問題的情況,將會進行追蹤。
字型控制器 - 我們已新增用於控制字型和字型大小的設定。 有兩個不同的設定,一個用於文字視窗(單空間視窗,例如反組譯碼、來源、命令等),另一個用於工具視窗(局部變數、堆疊等)。 我們未來將會更新一些區域,而這些區域目前仍未受到這些選項的影響。
醒目功能增強 - 命令視窗中文字的持續反白功能現在也會醒目顯示在來源和筆記視窗中的文字。
其他變更與錯誤修正:
- 已將 [移至反組譯碼] 新增至來源視窗的內容選單。
- 已在反組譯碼視窗中新增一個核取方塊,選項為 [遵循目前的指示]。
- 已修正導致命令視窗在輸出大量文字時執行緩慢的錯誤。
- 已將 Page Up 和 Page Down 鍵的功能更改為類似 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 Preview 視窗標題,以確保在核心偵錯時,重要資訊顯示在開頭。
- 命令視窗中的替代背景對比應該稍微明顯一點。
1.0.1810.2001
此版本包含這些更新。
- 從 [檔案] 選單或 [常用] 功能區存取的 [新增設定] 對話框。
- [事件和例外狀況設定] 對話框。 此功能表會變更調試程式如何處理事件和例外狀況,相當於 'sx' 命令或 WinDbg 的事件篩選對話方塊。 在功能區中選取 [設定],然後點選左側的 [事件和例外狀況] 來進行管理。
- 性能更佳的TTD索引器已獲改進。 這會增加編製 TTD 追蹤檔案索引的效能,讓編製索引程式更快(介於 2x-10x 之間),同時讓索引檔更小(~50%)。 性能改善在大小超過 4 GB 的追蹤檔案中最為明顯,或者在使用具有 8 個以上 CPU 核心的電腦時。 新的索引器讓您可以更容易地偵錯超大型的追蹤記錄(50GB以上)。
- 用來指定架構的新debugArch啟動旗標。 WinDbg Preview 會嘗試使用正確的位元數來啟動目標的調試引擎,以更好地支援偵錯受管理程式碼。 在某些情況下,它無法判斷正確的位元架構,或者您可能想要覆寫它做出的決定。 使用 -debugArch x86|amd64 來控制調試程式引擎的架構。
其他變更與錯誤修正:
- 已修正一個 Bug,會導致在全螢幕調試器中開啟浮動視窗時出現黑邊。
- 已修正會導致符號選項被意外清除的錯誤。
- 當從最近目標啟動時,命令紀錄現在會被保留。
- 在資料模型視窗中,您現在可以編輯值。
- 未編制索引的 TTD 追蹤現在會更明顯顯示為未編制索引。
- 改善局部變數視窗的效能
- 已新增功能區按鈕,以將命令窗口記錄儲存至檔案。
- 新增了。 SelectMany(<projection>) 添加到預設的 LINQ 方法集。
1.0.1807.11002
此版本包含這些更新。
自動儲存和載入斷點。 這是取代工作區的第一個步驟。 我們正在藉由啟用斷點的儲存和載入,開啟這條道路。 從 [檔案] 功能表的 [最近使用] 索引標籤啟動先前已偵錯的內容,現在會載入當時會話的斷點。 此計劃是擴充此功能,以便在跨會話中保留更多資訊。 硬體斷點 (ba) 和其他各種斷點的屬性,例如線程和處理特定內容,以及條件目前並未儲存。
次要變更和錯誤修正:
- 已新增命令行選項 -x、-xe、-xd、-xn 和 -習,以控制例外狀況和事件的處理。 這些命令行選項的行為就像其命令對應項一樣。
- 附注視窗現在支援粗體、底線和斜體格式。
- 已修正某些縮放和捲動問題。
- 選取命令、記憶體、來源或其他反組譯視窗中的文字,現在將會在選取文字的其他實例上顯示淺色醒目提示。
- 已修正中斷符號載入會導致會話其餘部分的符號載入失敗的錯誤。
- NatVis 現在會在重啟工作階段時正常重新載入。
1.0.1805.17002
此版本包含這些更新。
新的反組譯碼視窗 - 反組譯碼窗口現在包含:
- 向上或向下捲動時,盡可能會持續載入更多反編譯程式碼。
- 數字、程式碼地址和操作碼的語法醒目提示。
- 選取程式代碼符號會將反組譯碼視窗跳至該位置。
- 將滑鼠停留在數位上方會顯示工具提示,可將該數字轉換成其他基底。
- 表示函式開頭的標頭。
更快速的來源視窗 - 來源視窗 已更新為更快且更有資源效率。
次要變更和錯誤修正:
- 已修正符號快取的相關問題
- 修正了一些情況,當目標未被中斷時,無法使用切換初始中斷功能。
- 如果您在命令視窗中按索引標籤鍵,但沒有任何可用選項,游標現在會留在輸入欄位中。
- WinDbg Preview 現在會在開啟 CAB 檔案時自動偵測檔案的位元數。
1.0.1804.18003
此版本包含這些更新。
符號狀態和取消的改進 - 有時調試器在載入符號時會顯示BUSY,如果未啟用 !sym noisy,就很難判斷它正在做什麼以及原因。 我們已更新 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 的明確呼叫,將元數據描述元放在對象上來提供。 函式傳回值、重複的值及其他值內容,都可以透過 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之前,新增一個警告以提醒以未提升權限執行時的風險。
- 已新增 選項以覆寫自動目標位偵測。
- 在某些功能(例如在傾印檔案中操作時)的無法使用情況下,停用各種檔案選單和功能區選項(例如 "前往")。
已知問題:
- SOS 不適用於 x86 追蹤。
1.0.13.0
此版本新增時間旅行追蹤。 時間移動偵錯,可讓您記錄進程,然後稍後再向前和向後重新執行。 時間移動偵錯 (TTD) 可協助您更輕鬆地偵錯問題,方法是讓您「倒轉」調試程式會話,而不需要重現問題,直到您發現 Bug 為止。 如需詳細資訊,請參閱 時間移動偵錯 - 概觀。
1.0.12.0
此版本是 WinDbg Preview 的第一個版本。 如需 WinDbg 預覽版中可用功能的一般資訊,請參閱 WinDbg 的主要功能。