この単純な要求は非常に複雑であることがわかります。WinDbgのウィンドウ位置はワークスペースに保存されます。WinDbgには、いくつかのデフォルトのワークスペースがあります。
- ベース-これは、デバッグを開始する前に使用されるワークスペースです(ダンプを開いていない、exeを開いていない、何にも接続されていない)
- ダンプファイルごと-開くダンプごとに、このファイル用のワークスペースがあります
- 実行可能ファイルごと-開いた実行可能ファイルごと。
- ユーザーモード-ライブユーザーモードデバッグ時に使用されます
- カーネルモード-カーネルモードのデバッグ時に使用されます
- マシンアーキテクチャごと-x64の場合は1、x86の場合は1、IA64の場合は1
- リモート-リモートデバッグ時に使用されます
任意のタイプのデバッグ(つまり、ライブユーザーモードまたは事後ダンプ分析)では、通常、Base+Yourタイプのデバッグの設定の組み合わせになります。
ダンプファイルを開くと、BASE + Perダンプファイルが取得されます。ライブユーザーモードデバッグの場合は、BASE + User-modeが取得されます。x64マシンのライブカーネルデバッグの場合は、BASE + Kernel-mode+x64が取得されます。
特定のモードで行ったすべての変更は、最後にオーバーラップしたワークスペースに保存されます。つまり、ダンプファイルを開くと(つまり、Base + Perダンプ)、設定への変更はすべて、このダンプのワークスペースに保存されます。
組み込みのワークスペースとそのすべての組み合わせに加えて、(顧客の)ワークスペースという名前が付けられています。これらは、[ファイル]> [ワークスペースの保存]に移動し、-Wコマンドライン引数を使用してWindbgの起動時に有効にできるすべての設定を保存するための名前を指定する場合に発生します。
質問に戻ります。.cmdtreeを開くにはどうすればよいですか?ベースワークスペースではできません。多くのウィンドウは、デバッガーが休止状態(BASEワークスペース内)にない場合にのみ使用できます。デバッガーをアクティブな状態にすると、これらのウィンドウが使用可能になります。
発生した問題は、すべてを希望どおりにセットアップするには、デバッガーをアクティブ状態(exeを開いて、ダンプを開いて、ライブデバッグ)にし、ウィンドウレイアウトを保存する必要があることです。 、開いていたexe、ダンプ、または実行していたライブデバッグも保存されます。
最善の策は、レジストリ(HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \ command)で-cを使用することで、すでに行っていたことを実行することです。これにより、ダンプをダブルクリックするだけで、ダンプ分析を実行するたびにこれらのコマンドラインオプションを取得できます。次に、コマンドラインも組み込んだwindbgへのショートカットを作成して、これらの設定が他の種類のデバッグに適用されるようにすることができます。
上記のregkeyからのコマンドラインは次のとおりです。
"c:\ debuggers \ x64 \ windbg.exe" -z "%1" -Q -W Internal -c ".load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen / t C:\ Users \ jasone \ Logs \ debug.log; aS .p .process / p / r; aS .t .thread / p / r; aS!p!process; aS!t!thread; aS .f .frame; aS dv dv / V / i / t; aS .f .frame "
これは何をしますか?
デバッガーを起動し、ダンプファイルにアタッチし、ワークスペース設定を保存するプロンプトを表示せず、「内部」ワークスペース(作成した名前付きワークスペース)を開き、これらのコマンドを実行して、デバッガー拡張機能をロードし、設定を設定し、エイリアスを作成して作業を楽にします。