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

デバッガー コマンドは、プレーン テキストまたはデバッガー マークアップ言語 (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を使用してカラー モードを明示的に有効にする必要があります。 tools.iniの <新しいcol_mode true|false> トークンは、カラー モードの設定を制御します。 tools.ini ファイルの操作の詳細については、「tools.iniの構成」を参照してください

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

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

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

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

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

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

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

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

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

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

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

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

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

カスタマイズ DML

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

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

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

次のコマンドは、[コマンド ブラウザー] ウィンドウにテキストとリンクを表示します。

.browse .dml_start c:\Dml_Experiment.txt

コマンド ブラウザー ウィンドウの DML ファイル出力のスクリーンショット。

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

DML ファイル出力のリンクをクリックした後のモジュール一覧のスクリーンショット。

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