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

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

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

DML 対応コマンド

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

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

screen shot of lmd output.

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

screen shot of module details.

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 コマンドを<使用して、リンク> タグ (およびその他の DML タグ) を試すことができます。 .browse .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

screen shot of dml file output.

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

screen shot of module list.

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