リリース ノート
このトピックでは、WinDbg の新機能に関する情報を提供します。 以前のバージョンは WinDbg Preview としてリリースされました。
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 リボンの新しい [拡張機能] タブにアイコンを追加できるようになりました。 これらのアイコンをクリックすると、特定のデータ モデル クエリの視覚化がトリガーされます。 拡張機能のこの手段は、拡張機能ギャラリー マニフェストに views を追加することによって実現されます。 view は、名前とアイコンのペアをデータ モデルのクエリとビューの種類にバインドします。 ドキュメントは、「拡張機能ギャラリー マニフェスト ドキュメント」でご確認いただけます
拡張機能ギャラリー例外読み込みトリガーに例外パラメーターを追加しました
ギャラリー拡張機能は、特定の例外パラメーター値に基づいて条件付きで読み込まれるようになりました。 詳細については、「拡張機能ギャラリー マニフェスト ドキュメント」を参照してください。
特定のシンボルをダウンロードしない構成オプション
指定したイメージのシンボルのダウンロードをスキップできるようになりました。
構成ファイルのSymbols
セクションDbgX.xml
で、シンボルの一覧を追加できます。
<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 の機能強化
モジュール ウィンドウやスタック ウィンドウなどのウィンドウの一部に微細な機能強化を行いました。
- 列のヘッダーをクリックすると、グリッド ビューで並び替えることができるようになりました。
- さらに多くの右クリック アクションが使用できます。
- スタック ウィンドウには、必要に応じてフレームがインラインで表示されます。
バグ修正
- 4 GB を超える PDB が HTTP 経由でダウンロードされない問題を修正しました。
- このような PDB として Edge が挙げられます。
- デバッガー資格情報プロバイダーのキャッシュの問題を修正しました (これでサイトごとに資格情報がキャッシュされるようになりました)。
- 拡張機能ギャラリー読み込みトリガーの評価中のバグを修正しました。
- クラッシュの原因となる可能性がある
!address
のバグを修正しました。 !heap -a -a
が機能するはずです。
TTD
バージョン 1.11.410 の 「TTD リリース ノート」を参照してください。
1.2402.24001.0
新機能
Linuxのライブデバッグ
Linux プロセスをライブ デバッグできるようになりました。 詳細については、次のトピックを参照してください。
WinDbg は Linux 上では動作しないため、当面は WinDbg クライアントには Windows が必要になります。
タイムトラベルデバッグで実行のサブセットを記録する
記録するモジュールのリストを指定して、関心のあるモジュールに TTD を集中させることができるようになりました。 これにより、記録のオーバーヘッドを大幅に削減できます。 これを使用するには、[構成と記録] ダイアログ ボックスで [実行のサブセットを記録する] をチェックし、記録したいモジュールを指定します。 (以下の既知の問題を参照してください)。
より細かく制御するには、新しいインプロセス録画 API を使用して番組を正確に録画できます。 サンプルコードとドキュメントでその方法を確認してください。
コンパクトなレジスタウィンドウ
新しいレジスタ ウィンドウは、r
コマンドの出力とまったく同じように見えます 新しいレジスタ ウィンドウからの編集はまだサポートされていないことに注意してください。
(値を入力) をメモリコマンドに追加するための新しいパラメータe
。
e
(値の入力) メモリへのコマンドは、d
(表示メモリ) コマンドと同様に物理アドレスをサポートするようになりました。 これらのオプションはカーネル モードでのみサポートされていることに注意してください。
オプション | 説明 |
---|---|
/p |
表示には物理メモリ アドレスを使用します。 Range で指定した範囲は、仮想メモリではなく物理メモリから取得されます。 |
/p[c] |
/p と同じですが、キャッシュされたメモリが読み取られる点が異なります。 c を角かっこで囲む必要があります。 |
/p[uc] |
/p と同じですが、キャッシュされていないメモリが読み取られる点が異なります。 uc を角かっこで囲む必要があります。 |
/p[wc] |
/p と同じですが、書き込み結合メモリが読み取られる点が異なります。 トイレの周囲のブラケットを含める必要があります。 |
詳細については、「e、ea、eb、ed、eD、ef、ep、eq、eu、ew、eza (値の入力)」を参照してください。
バグの修正
- Linux デバッグでの Rust 名のデマングリングのサポート
- CLR デバッグの改善
- 混合モードスタックウォーキング CLR フレームを強制する機能を追加
config.xml
またはDbgX.xml
にForceMixedModeStackWalker
設定を追加しました。- 1 回限りの調査、または構成設定を変更できない場合に使用するコマンドを追加
!forceclrmixedmodeunwind
しました。
- 混合モードスタックウォーキング CLR フレームを強制する機能を追加
- Linux での CLR デバッグの全般的な改善
- LinuxKernel.js および CPU ごとの変数に関する多数の問題を修正
- CPU ごとのカーネル スケジューラ実行キューをダンプできるようにする
!runq
コマンドを LinuxKernel.js に追加しました (Linux クラッシュ ユーティリティrunq
のコマンドと形式が似ています) - カーネルの変更に対応するために LinuxKernel.js のさまざまなコマンドを修正しました。より最近のカーネルでは、タイマー ツリーは生の RB ノードの代わりにキャッシュされた RB ノードを使用します。最近のカーネルでは、all_bdevs リストがなくなったので、代わりにブロック デバイスがスーパーブロックからウォークされるようになりました (blockdev_superblock)
- CPU ごとのカーネル スケジューラ実行キューをダンプできるようにする
- Visual Studio の最新バージョンのように動作するためのさまざまな natvis 修正
- 従来のsourceinfoよりsourcelinkを優先する
- Pdb からのソースリンク ストリームを表示するコマンドを
!lmsourcesinfo <module>
追加しました (ソースリンクに関する問題のデバッグを支援するため)。
- Pdb からのソースリンク ストリームを表示するコマンドを
既知の問題
TTD で記録するモジュールのリストを指定する場合、このリリースでは複数のモジュールを指定しても機能しません。
1.2308.2002.0
多くのバグ修正と小さな改善。
1.2306.12001.0
多くのバグ修正と小さな改善。
1.2303.30001.0
Note
デバッガーの名前が WinDbg Preview からWinDbgに変更されました。
Windows 用デバッグ ツールとともにリリースされた従来のデバッガーは、WinDbg (クラシック) として参照されます。
ARM64 でのタイムトラベルのデバッグ
WinDbg は ARM64 上でネイティブに実行できるだけでなく、ネイティブ ARM64 プロセスのタイム トラベル デバッグ (TTD) も有効にしました。 ネイティブ ARM64 プロセス (および x86 および ARM32 プロセス) を記録し、x64 マシン上でも簡単にデバッグできるようになりました。 ARM64 デバイス上の x64 または x64 対応 (ARM64EC) プロセスのサポートはまだ利用できません。
全体的な TTD パフォーマンスも向上し、一般的な SIMD 命令を使用するプロセスの記録オーバーヘッドが大幅に削減されました。 MMX から SSE 4.2、AVX、AVX2 まで、合計 65 の新しい命令が最適化されました。
あいまいなブレークポイントの解決
あいまいなブレークポイントにより、ブレークポイント式が複数の場所に解決される特定のシナリオで、デバッガーがブレークポイントを設定できます。 詳細については、「あいまいなブレークポイントの解決」を参照してください。
1.2107.13001.0
正規表現検索
WinDbg プレビュー検索には、正規表現 Regex を使用して検索するオプションが含まれるようになりました。 Ctrl+F を押して検索したいウィンドウで正規表現を有効にし、検索ボックスの横.*
にあるボタンを切り替えます。
制限モード
制限付きモードは、WinDbg プレビューが開始できるデバッグ セッションの種類をリモート デバッグ セッションとダンプ ファイルのみに制限できるオプションの設定です。 詳細については、「WinDbg - 制限付きモード」を参照してください。
シャドウ変数のサポート
以前のバージョンでは、スコープ内の別の変数と名前を共有する変数を評価 (??) または表示 (dx) しようとすると、WinDbg は「あいまいなシンボル」エラーをスローしました。 Windbg は、変数名に@n
追加することによって、同じ名前を共有する変数を明確にするようになりました。 例: Foo@0
、foo@1
この変更は、[ローカル] ウィンドウにも反映されます。 以前は、スコープ内で最も近い変数のみが表示されていました。
1.2104.13002.0
スマートな番号選択と検索
WinDbg Preview の便利な生産性機能は、コマンド ウィンドウでパターンを検出する機能です。 これを行うには、任意のテキストを選択し、そのテキストの他のすべてのインスタンスを強調表示します。 この強調表示は記憶パターンを調べるときに便利なので、数値が 16 進数、10 進数、科学的表記法でどのようにフォーマットされているかに関係なく、他の基数の同等の数値も強調表示されるようになりました。 番号付けスキームの詳細については、「n (基数の設定)」を参照してください。
例:
番号付けスキームの詳細については0x000001e2fb3f6160
、「n (基数の設定)」を参照してください。
この機能は、半一時的なハイライトでも機能します。 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 でブックマークします。 ブックマークを使用すると、他のイベントに対するトレース内のさまざまな位置を一目で確認したり、注釈を付けたりすることが容易になります。
ブックマークにわかりやすい名前を付けることができます。
[タイムライン > の表示] で使用できるタイムライン ウィンドウからブックマークにアクセスします。 ブックマークの上にマウスを置くと、ブックマーク名が表示されます。
ブックマークを選択して保持 (または右クリック) すると、その位置に移動したり、ブックマークの名前を変更したり、削除したりできます。
モジュールウィンドウ
新しいウィンドウにはモジュールとその関連情報が表示され、[表示] リボンから利用できます。 次の情報が表示されます。
- パスの場所を含むモジュールの名前
- ロードされたモジュールのサイズ (バイト単位)
- モジュールがロードされるベース アドレス
- ファイル バージョン
ライブ デバッグで使用できるスレッド名/説明
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 サポートが追加されました。 Portable PDB (プログラム データベース) 形式は、共通言語インフラストラクチャ (CLI) 言語のコンパイラによって生成され、デバッガやその他のツールによって使用されるデバッグ情報のエンコードを記述します。 詳細については、「ポータブル PDB シンボル」を参照してください。
その他の変更とバグ修正
- WinDbg は、AMD64 および Linux カーネル ダンプ デバッグをサポートするようになりました。
- タイムトラベル記録の機能強化とその他の修正。
1.0.1912.11001
TTD タイムライン - トレース内の重要なイベント (例外、ブレークポイント、関数呼び出し、メモリ アクセス) を視覚的に表示する新しいウィンドウを追加しました。 タイムラインが自動的に開き、例外 (存在する場合) とブレークポイントが表示されます。 詳細については、「WinDbg プレビュー - タイムライン」を参照してください。
デフォルトのウィンドウ クロムに切り替えました - 私たちが使用していたカスタム ウィンドウ クロムは、見た目は良いものの、多くの人にとってスケーリングやサイズ変更の問題を引き起こしていたため、当面は削除することにしました。
ファイル メニューのキーボード ナビゲーションの改善 - キーボードだけでファイル メニューをナビゲートするのがはるかに簡単になりました。
その他の変更とバグ修正
- ターゲットの実行中はスタックとローカル ウィンドウが無効になり、ターゲットがない場合は「未指定のエラー」が表示されなくなります。
- 実行中のサービスを簡単に見つけられるように、接続ダイアログに「サービス」列を追加しました。
- 引数を使用してアプリケーションを起動するときにアーキテクチャ検出が機能しない原因となるバグを修正しました。
- 逆アセンブリ ウィンドウは、プライベート シンボルがロードされるときの逆アセンブリを改善しました。
- jsprovider.dll が自動的に読み込まれるようになったので、スクリプト リボンから [JSProvider の読み込み] ボタンを削除しました。
1.0.1908.30002
Improvements to TTD Calls objects - Calls queries now include parameter names, types, and values. 関数呼び出しのトレース全体にクエリを実行すると、完全に型指定されたパラメータとその値を取得できるため、パラメータごとに結果を簡単にフィルタリングできます。
Open Enclave のサポート - WinDbg Preview で Open Enclave (OE) アプリケーションをデバッグできるようになりました。詳細については、「Open Enclave のデバッグ」を参照してください。
ELF コア ダンプ - Open Enclave のサポートの一環として、WinDbg は Enclave と Linux アプリケーションの両方から ELF コア ダンプとバイナリ、および DWARF シンボル (DWARF 5 は現在サポートされていません) を開くことができます。 Windows 以外のアプリケーションからコア ダンプを開く場合、基本的なウィンドウとコマンドはすべて正しく動作しますが、ほとんどの拡張機能と Windows 固有のコマンドは動作しません。 ELF and DWARF files will be downloaded from symbol servers following the key conventions defined here サポートされているシナリオはエンクレーブだけですが、他の Linux コア ダンプを開くことに関するフィードバックをお待ちしています。
TTD ファイル形式の変更 - TTD トレースのファイル形式が大幅に更新され、上位互換性が失われます。 WinDbg Preview の以前のバージョンでは、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 を使用しているため、それらの機能を使用しようとするとこのエラーが発生します。 この問題に対する修正を追加し、この問題が発生するシナリオがまだ存在するかどうかを追跡する予定です。
フォント コントロール - フォントとフォント サイズを制御するための設定を追加しました。 2 つの異なる設定があり、1 つはテキスト ウィンドウ (逆アセンブリ、ソース、コマンドなどの等幅ウィンドウ) 用、もう 1 つはツール ウィンドウ (ローカル、スタックなど) 用です。 これらのオプションの影響を受けない領域がまだいくつかありますが、今後更新される予定です。
ハイライト表示の改善 - コマンド ウィンドウ内のテキストの永続的なハイライト表示により、ソース ウィンドウとノート ウィンドウ内のテキストもハイライト表示されるようになりました。
ソース読み込みの改善 - ソース ファイルの読み込み方法が変更されました。 以前は、ソース ファイルを開くときに、追加コマンドの実行などのエンジン操作が不可能か、予測不可能でした。 並列処理を改善し、ソースを開く操作をより確実にキャンセルできるようにするために、読み込みが行われる場所を変更しました。
その他の変更とバグ修正:
- ソースウィンドウのコンテキストメニューに「逆アセンブリへ」を追加しました。
- 逆アセンブリウィンドウに「現在の指示に従う」チェックボックスを追加しました。
- 大量のテキストを出力するときにコマンド ウィンドウの実行が遅くなるバグを修正しました。
- Visual Studio と同様に動作するようにページアップキーとページダウンキーを変更しました。
- ASM ファイルをソース ウィンドウで開くと、基本的なコメント、文字列、ディレクティブが強調表示されるようになりました。
1.0.1812.12001
このバージョンにはこれらの更新が含まれています。
デバッガー データ モデル C++ ヘッダー - C++ 経由でデバッガー データ モデルを拡張するために、Windows SDK の一部として新しい C++ ヘッダー DbgModel.h が含まれています。 詳細については、「デバッガー データ モデル C++ の概要」を参照してください。 このリリースには、「dx」コマンド、JavaScript、および新しい DbgModel.h ヘッダーを通じてアクセスできるデバッガー データ モデルにいくつかの「API スタイル」機能を追加する新しい拡張機能が含まれています。 この拡張機能は、データ モデルを拡張して、Debugger.Utility.Code 名前空間を介したアセンブリとコードの実行、および Debugger.Utility.FileSystem 名前空間を介したローカル ファイル システムに関する知識を含めます。
合成タイプ拡張機能 この新しい API 拡張機能では、GitHub リポジトリに新しいサンプルが用意されています - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes。 この JavaScript 拡張機能は、基本的な C ヘッダー ファイルを読み取り、ヘッダーで定義されている構造体と共用体の合成型情報を定義します。 dx コマンドを使用すると、それらの型の型情報を備えた PDB があるかのように、メモリを構造化して表示できます。
その他の変更とバグ修正:
- WinDbg プレビューは、ステップ実行時にソース ウィンドウまたは逆アセンブリ ウィンドウを最前面に表示する処理をよりインテリジェントに処理するようになりました。
- カーネルのデバッグ時に、より重要な情報が最初に表示されるように、WinDbg プレビューのウィンドウ タイトルを再配置しました。
- コマンド ウィンドウで交互に現れる背景のコントラストがわずかに目立つようになります。
1.0.1810.2001
このバージョンにはこれらの更新が含まれています。
- [ファイル] メニューまたは [ホーム] リボンからアクセスできる [新しい設定] ダイアログ。
- イベントと例外の設定ダイアログ。 このメニューは、デバッガーがイベントと例外を処理する方法を変更します。これは、「sx」コマンドまたは WinDbg のイベント フィルター ダイアログに相当します。 ホーム リボンで [設定] を選択し、左側の [イベントと例外] をクリックしてこれらを管理します。
- TTD インデクサーが改善され、パフォーマンスが向上しました。 これにより、TTD トレース ファイルのインデックス作成のパフォーマンスが向上し、インデックス作成プロセスが大幅に高速化され (2 倍から 10 倍)、インデックス ファイルが大幅に小さくなります (最大 50% 小さくなります)。 パフォーマンスの向上は、サイズが 4 GB を超えるトレース、または多数の CPU コア (8 コア以上) を搭載したマシンを使用している場合に最も顕著です。 新しいインデクサーにより、非常に大規模なトレース (50 GB 以上) のデバッグがより容易になります。
- アーキテクチャを指定するための新しい debugArch 起動フラグ。 WinDbg プレビューは、マネージ コードのデバッグをより適切にサポートするために、ターゲットに対する正しいビット数でデバッガー エンジンを起動しようとします。 状況によっては、正しいビット数を決定できない場合や、決定したビット数をオーバーライドしたい場合があります。 -debugArch x86|amd64 を使用して、デバッガー エンジンのアーキテクチャを制御します。
その他の変更とバグ修正:
- フローティング ウィンドウが開いている全画面デバッガーに黒いバーが表示されるバグを修正しました。
- シンボル オプションが意図せずクリアされてしまうバグを修正しました。
- 最近のターゲットから起動するときにコマンド履歴が保存されるようになりました。
- データ モデル ウィンドウで値を編集できるようになりました。
- インデックスが作成されていない TTD トレースは、インデックスが作成されていないことがより明確になります。
- ローカルウィンドウのパフォーマンスの向上
- コマンド ウィンドウのログをファイルに保存するためのリボン ボタンが追加されました。
- を追加しました。 SelectMany(<projection>) を LINQ メソッドの既定のセットに設定します。
1.0.1807.11002
このバージョンにはこれらの更新が含まれています。
ブレークポイントの自動保存とロード。 これは、ワークスペースを置き換える最初のステップです。 ブレークポイントの保存とロードを有効にすることで、そのルートを開始します。 ファイル メニューの [最近] タブから以前にデバッグしたものを起動すると、そのセッションからブレークポイントが読み込まれるようになります。 計画では、この機能を拡張して、セッション間でより多くの情報を保存する予定です。 ハードウェア ブレークポイント (ba) や、スレッドやプロセス固有のコンテキスト、条件などのブレークポイント上のその他のさまざまなプロパティは、現在保存されません。
マイナーな変更とバグ修正:
- 例外とイベントの処理を制御するためのコマンドライン オプション -x、-xe、-xd、-xn、および -xi を追加しました。 これらのコマンド ライン オプションは、対応するコマンドと同様に動作します。
- メモ ウィンドウは、太字、下線、斜体の書式設定をサポートするようになりました。
- ズームとスクロールの問題をいくつか修正しました。
- コマンド、メモリ、ソース、または逆アセンブリ ウィンドウでテキストを選択すると、選択したテキストの他のインスタンスの上に明るいハイライトが表示されるようになりました。
- シンボルの読み込みを中断すると、残りのセッションでシンボルの読み込みが失敗するバグを修正しました。
- NatVis はセッションの再開時に適切にリロードされるようになりました。
1.0.1805.17002
このバージョンにはこれらの更新が含まれています。
新しい逆アセンブリ ウィンドウ - 逆アセンブリ ウィンドウには次が含まれます。
- 上下にスクロールすると、可能な限りさらに逆アセンブリが読み込まれ続けます。
- 数値、コードアドレス、オペコードの構文強調表示。
- コード シンボルを選択すると、逆アセンブリ ウィンドウがその場所にジャンプします。
- 数値の上にマウスを置くと、その数値を他の基数に変換するツールチップが表示されます。
- 関数の開始を示すヘッダー。
ソース ウィンドウの高速化 - ソース ウィンドウが更新され、より高速になり、リソース効率が向上しました。
マイナーな変更とバグ修正:
- シンボルキャッシュに関する問題を修正しました
- ターゲットがブレークインしていない場合にトグル初期ブレークが使用できなかったいくつかのケースを修正しました。
- 利用可能なものが何もない状態でコマンド ウィンドウで Tab キーを押した場合、カーソルは入力フィールドに留まるようになりました。
- WinDbg プレビューは、CAB ファイルを開くときにビット数を自動検出するようになりました。
1.0.1804.18003
このバージョンにはこれらの更新が含まれています。
シンボルのステータスとキャンセルの改善 - デバッガでシンボルの読み込み中が表示されることがありますが、!sym noisy を有効にしないと、何が行われているのか、またその理由を判断するのが困難です。 WinDbg プレビューを更新して、問題のトラブルシューティングに役立つシンボルの読み込み時の動作に関するコミュニケーションを改善しました。 何が起こっているかを正確に簡単に確認できることに加えて、シンボルのキャンセルの信頼性を高めるためにいくつかの変更を加えました。ログ ウィンドウには、!sym noisy が有効な場合に通常出力される詳細の一部が含まれるようになります。 [表示] - [>ログ] をクリックすると、オンにしてシンボルを再ロードしなくても、ノイズの多いシンボル ロード出力がすべて表示されます。
実験的なメモ ウィンドウ - WinDbg プレビューにメモをとるためのウィンドウが追加されました。 「表示」->「メモ」を押して開きます。 これにコピー/ペーストすると、DML リンクは保持され、コマンド ウィンドウと同様に機能します。 ウィンドウが開いているときに、「メモ」リボンからメモ ファイルを保存およびロードすることもできます。
実験的な高速ソース ウィンドウ - WinDbg Preview のパフォーマンスを向上させるために、より効率的で実験的な新しいソース ウィンドウがあります。 コンテキスト メニューと構文のハイライトに関してはまだいくつかの不足点がありますが、早期フィードバックを提供するために、完成する前に誰もがそれを試してみるオプションを提供したいと考えています。 これを使用するには、$UseFastSourceWindow を実行します。 古いものに戻したい場合は、$UseMonacoSourceWindow を実行します。 設定はセッション間で保持されるため、新しいバージョンを取得するには、ソース ウィンドウを閉じて再度開く必要があります。
JSProvider API バージョン 1.2 - API バージョン 1.2 のサポートを宣言する JavaScript 拡張機能の場合:
- スクリプトを終了する .compareTo メソッドを持つオブジェクトにはカスタム コンパレータがあります (比較演算子は DX エバリュエーターや他の場所で機能します。例: IModelObject::Compare)
- スクリプトを終了する .equals メソッドを持つオブジェクトにはカスタム等価演算子が含まれます (== と != は DX エバリュエーターやその他の場所で機能します。例: IModelObject::IsEqualTo)
- スクリプトに入るネイティブ オブジェクトまたはデータ モデル オブジェクトには、カスタム コンパレータまたはカスタム等価性実装へのアクセスを許可する .compareTo および .equals が含まれます。
マイナーな変更とバグ修正:
- .server は、短縮名に関するドメインの問題がある場合に使いやすいように、完全修飾ドメイン名をリストするようになりました。
- Ctrl+G がソース ウィンドウで機能するようになりました。
- 逆アセンブリウィンドウにアドレスバーを追加しました。
- WinDbg Preview は、より期待どおりの方法で _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 で定義されたオブジェクトは、標準の C++ 演算子を使用する dx または LINQ 操作で機能するカスタムの比較可能または同等の概念を実装できるようになりました。 これを利用するには、スクリプトは、レコード「new host.apiVersionSupport(1, 2)」を挿入することにより、initializeScript 配列でホスト API の新しいバージョンをサポートすることを宣言する必要があります。 これを完了すると、任意の「dx」またはデータ モデル ウィンドウの LINQ クエリでこれらの関数を使用できるようになります。 メソッドが .compareTo(other) を実装している場合、比較可能です (比較演算子は dx と LINQ で機能します)。 メソッドが「this< other」などの負の値を返した場合。 メソッドがゼロを返す場合、「this == other」になります。 メソッドが正の値を返した場合、「this> order」。 メソッドが .equals(other) を実装している場合、それは等価可能です (== は dx および LINQ で機能します)。 メソッドは true または false を返す必要があります。
マイナーな変更とバグ修正:
- ブート デバッグ中にスタック ウィンドウとローカル ウィンドウが動作しなかったバグを修正しました。
- ProductVersion および同様のフィールドをより正確にレポートするために LM の出力を更新しました。
- TTDセッション中に「ステップアウトバック」ボタンを有効にしました
- -lsrcpath のサポートを追加しました
- ローカル、ウォッチ、モデル ウィンドウのヘッダーが、下にスクロールしても消えなくなりました。
- ALT キーを押しながら Tab キーを押して WinDbg プレビューに戻ると、コマンド ウィンドウはカーソルの位置を適切に保持します。
- 詳細モードを切り替えるための CTRL+ALT+V ショートカットを追加しました
- コマンド ウィンドウのタブを選択したまま (または右クリックし)、「自動スクロールをオフにする」を選択することで、コマンド ウィンドウの自動スクロールを無効にできるようになりました。
- 実行可能ファイルの起動詳細ページから子プロセスをデバッグできるようになりました。
1.0.14.0
このバージョンにはこれらの更新が含まれています。
プロセス サーバー エクスペリエンスの向上 - [ファイル] メニューに、どのプロセス サーバーに接続して対話しているかを示す新しい通知が追加されました。 これらの変更の一環として、デバッグ セッションの終了時にプロセス サーバーの接続は維持され、[ファイル] メニューで切断できるようになりました。
表示リボンの新しいプリセット レイアウト オプション - 「表示」リボンに新しい「レイアウト」オプションがあります。 現在、デフォルト、逆アセンブリに重点を置いたレイアウト、最小限のレイアウトの 3 つのレイアウトがあります。
タイム トラベル デバッグ リボン - タイム トラベル デバッグ トレースをデバッグするときに表示される、強化されたタイム トラベル リボンがあります。
JavaScript スクリプトからのメタデータ - JavaScript 拡張機能は、プロパティやその他の構成要素のメタデータを返すことができるようになりました。 これは、拡張機能がヘルプ文字列を提供したり、値の表示基数を示したりできることを意味します。 メタデータは、Symbol.metadataDescriptor の存在または host.metadata.defineMetadata への明示的な呼び出しを介してオブジェクトにメタデータ記述子を配置することによって提供されます。 関数の戻り値、反復値、およびその他の値コンテキストは、host.metadata.valueWithMetadata を介して値のメタデータを返すことができます。
JavaScript API の更新 - JavaScript プロバイダー内の API にソース レベルの重大な変更が加えられる可能性があります (ネイティブ オブジェクトの新しい投影メソッドとプロパティを含む)。 既存の拡張機能には、JsProvider API の新しいバージョンをサポートすることを示さない限り、破壊的な変更が含まれる可能性はありません。 新しい API バージョンのサポートは、バージョン 1.1 をサポートするという主張とともに、initializeScript によって返される配列に host.apiVersionSupport レコードを配置することによって示されます。 多分? .. バージョン 1.1 のサポートを示す値。
API バージョン 1.1 の変更点は次のとおりです。
- host.getModuleSymbol および host.getModuleType は、シンボルが見つからない場合、例外をスローする代わりに null を返します。
- すべてのネイティブ オブジェクトには、.targetLocation に加えて address プロパティがあります。 オブジェクトにアドレスがない場合、プロパティにアクセスすると例外がスローされます。
- すべてのネイティブ オブジェクトには、JavaScript がオブジェクトに付ける名前と競合する可能性があるオブジェクトのプロパティにアクセスするための新しい .getObjectValue メソッドと .setObjectValue メソッドがあります (例: '住所') 。
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) を使用すると、バグが見つかるまで問題を再現する代わりに、デバッガー セッションを「巻き戻す」ことができるため、問題のデバッグが容易になります。 詳細については、「Time Travel Debugging - 概要」を参照してください。
1.0.12.0
このバージョンは、WinDbg Preview の最初のリリースでした。 WinDbg プレビューで利用可能な機能に関する一般的な情報については、「WinDbg の主な機能」を参照してください。