デバッガー マークアップ言語の使用

デバッガーコマンドは、プレーンテキストで出力を提供することも、デバッガーマークアップ言語 (DML) を使用する拡張形式で出力することもできます。 DML を使用して強化された出力には、関連するコマンドを実行するためにクリックできるリンクが含まれています。

DML は Windows 10 以降で使用できます。

DML 対応コマンド

次のコマンドでは、DML 出力を生成できます。

LmDコマンドは、DML 出力を提供できるコマンドの例です。 LmDコマンドは、読み込まれたモジュールの一覧を表示します。 次の図に示すように、各モジュール名はリンクで、これをクリックするとモジュールに関する詳細情報を取得できます。

lmd の出力のスクリーンショット。

次の図は、 usbuhci リンクをクリックした結果を示しています。 出力には、usbuhci モジュールの詳細を調べることができる追加のリンクが含まれています。

モジュールの詳細のスクリーンショット。

DML のオンとオフの切り替え

.Prefer_dmlコマンドは、dml をオンまたはオフにします。 DML が有効になっている場合 (.prefer_dml 1)、dml 出力を生成できるコマンドは既定で DML 出力を生成します。

コンソールの機能強化

すべての Windows デバッガーに、DML の解析をサポートするコマンド出力領域が作成されました。 Windbg では、コマンドウィンドウはすべての DML 動作をサポートし、色、フォントスタイル、およびリンクを表示します。 コンソールデバッガー、ntsd、cdb、および kd では、DML の色属性のみがサポートされており、色モードが有効になっている真のコンソールで実行している場合にのみサポートされます。 リダイレクトされた i/o、ntsd – d、または remote.exe セッションを使用したデバッガーでは、色は表示されません。

コンソールデバッガーの色モード

コンソールデバッガー、ntsd、cdb、および kd では、実際のコンソールで実行するときに、色分けされた出力を表示できるようになりました。 これは既定ではありません。 tools.ini を使用して、色モードを明示的に有効にする必要があります。 新しい col_mode < true | false > トークン tools.ini では、カラーモード設定を制御します。 tools.ini ファイルの操作の詳細については、「 tools.iniの構成」を参照してください。

カラーモードが有効になっていると、デバッガーは色分けされた出力を生成できます。 既定では、ほとんどの色が設定されず、代わりに現在のコンソールの色が既定で設定されます。

Windbg コマンドブラウザーウィンドウ

Windows 10 以降の Windbg では、コマンドブラウザーウィンドウは、DML を解析して表示します。 <リンク > 、 < exec、外観の変更などのすべてのタグ > は完全にサポートされています。

WinDbg のメニューを使用してコマンドブラウザーセッションを開始するには、[ 表示]、[ コマンドブラウザー] の順番に選択します。 コマンドウィンドウの [browse < ] コマンドを > 実行すると、新しいコマンドブラウザーウィンドウが開き、指定されたコマンドが実行されます。 詳細については 、「WinDbg でのコマンドブラウザーウィンドウの使用」を参照してください。 Ctrl キーを押しながら N キーを押すと、新しいコマンドブラウザーウィンドウを開くこともできます。

コマンドブラウザーウィンドウは、web ブラウザーの動作を意図的に模倣しています。ドロップダウンの履歴と前/次のボタンがあります。 [履歴] ドロップダウンには最後の20個のコマンドのみが表示されますが、完全な履歴が保持されます。コマンドを実行すると、古い履歴を表示するためのドロップダウンを取得できます。

任意の数のコマンドウィンドウを同時に開くことができます。 コマンドウィンドウはワークスペースに保持されますが、現在のコマンドのみを保存します。履歴は保持されません。

[WinDbg ビュー ] メニューには、 Set browser start コマンド オプションがあります。このオプションを使用すると、ユーザーは、.dml_start など、新しいブラウザーウィンドウの先頭に優先するコマンドを設定できます。 このコマンドはワークスペースに保存されます。

[表示] メニューの [最近使ったコマンド] サブウィンドウを使用すると、目的のコマンドを保持できます。 [最近使ったコマンド] を選択すると、指定されたコマンドで新しいブラウザーが開きます。 ブラウザーウィンドウのコンテキストメニューには、ウィンドウの現在のコマンドを最近使用したコマンドの一覧に追加するメニュー項目があります。 最近使用したコマンドの一覧は、ワークスペースに保存されます。

コマンドブラウザーウィンドウはコマンドを同期的に実行するので、コマンドが完了するまで出力は表示されません。 実行時間の長いコマンドは、完了するまで何も表示されません。

リンクには、web ブラウザーの右クリックコンテキストメニューと同様の右クリックコンテキストメニューがあります。 リンクは、新しいブラウザーウィンドウで開くことができます。 リンクのコマンドをクリップボードにコピーして使用することができます。

タイトルバーの右上隅にあるアイコンをクリックして、コマンドブラウザーウィンドウを自動更新または手動更新のいずれかに設定します。 自動更新ブラウザーでは、デバッガーの状態の変更に応じてコマンドが自動的に再実行されます。 これにより、出力はライブに維持されますが、すべての変更に対してコマンドを実行する場合のコストがかかります。 自動更新は既定でオンになっています。 ブラウザーをライブにする必要がない場合は、ウィンドウのショートカットメニューを使用して自動更新を無効にすることができます。

コマンドはユーザーインターフェイスではなく、エンジンによって実行されるため、 . cls (Clear Screen)などのユーザーインターフェイス固有のコマンドでは、コマンドブラウザーウィンドウで使用されるときに構文エラーが返されます。 また、ユーザーインターフェイスがリモートクライアントの場合は、クライアントではなくサーバーによってコマンドが実行され、コマンドの出力にはサーバーの状態が表示されることも意味します。

コマンドブラウザーウィンドウは任意のデバッガーコマンドを実行できます。 DML を生成するコマンドである必要はありません。 ブラウザーウィンドウを使用すると、任意のコマンドセットを使用してアクティブにすることができます。

DML のカスタマイズ

DML では、コマンドの出力に含めることができるタグの小さなセットが定義されています。 1つの例として、 < リンク > タグがあります。 .Dml_startおよび. browseコマンドを使用して、<リンク> タグ (およびその他の DML タグ) を試すことができます。 コマンド .dml_startfilepathは、dml ファイルに格納されているコマンドを実行します。 出力は、通常のコマンドウィンドウではなく、 コマンドブラウザーウィンドウ に表示されます。

ファイル c:\DmlExperiment.txt に次の行が含まれているとします。

My DML Experiment
<link cmd="lmD musb*">List modules that begin with usb.</link>

次のコマンドを実行すると、テキストとリンクがコマンドブラウザーウィンドウに表示されます。

.browse .dml_start c:\Dml_Experiment.txt

dml ファイルの出力のスクリーンショット。

[ Usb リンクで始まるモジュールの一覧 ] をクリックすると、次の図のような出力が表示されます。

モジュール一覧のスクリーンショット。

Dml のカスタマイズと DML タグの完全な一覧については、「 Dml を使用してデバッガーの出力をカスタマイズする」を参照してください。