私は Windows 7 のスタートアップ (ログオン前) コードに取り組んでおり、それをデバッグできるようにしたいと考えています (Microsoft のドキュメントはひどいので、実際にどのように機能するかを確認するためだけに)。
私の環境は Linux ホスト上の VirtualBox で、3 つの Windows VM (Windows 2008 ドメイン コントローラー、Windows 7 開発マシン、および Windows 7 テスト マシン) があり、テストの起動プロセスをデバッグできるようにしたいと考えています。仮想シリアル接続を使用して開発マシンからリモートでマシンを 2 つの仮想マシンに接続します。
[別の人生で、Windows ホスト上の VMware ワークステーションを使用して、ある Linux VM の Linux カーネル ドライバーを別の Linux VM からデバッグしたことがあるので、この種のことが潜在的に実行可能であることを知っています。
ホストから VirtualBox VM で Windows をデバッグするために windbg を使用している人を見てきましたが、2 番目のゲストから実行する必要があります (私のホストは Windows ではないため)。誰もそれを行う方法を考え出しましたか?
編集: 投稿する前に、明らかなアプローチを試しました。各 VM 構成に仮想シリアル ポートを作成し、両方を同じホスト パイプに接続して、開発 VM (デバッガー) によって作成され、テスト VM (デバッグ対象者) によって使用されます。それから走った
bcdedit /dbgsettings serial debugport:1 baudrate:115200
bcdedit /debug {current} on
テスト VM で実行し、シャットダウンします。(正しいシリアル ポートで) カーネル デバッグを選択した開発 VM で windbg を実行し、テスト VM を再起動しました。使用可能なシンボルがなく、テスト VM がハングしたというメッセージが表示されました。
それ以来、この記事を見つけました:http://www.benjaminhumphrey.co.uk/remote-kernel-debugging-windbg-virtualbox/(その人はWindowsホストを使用していますが)私が試した方法を正確に説明しているようです、しかし彼のテスト VM はハングしません。wndbg ウィンドウに表示される出力は彼のものと同じですが、「Windows XP Kernel ...」という行の前で停止します。
この問題が VirtualBox に関連しているという確信がなくなり、windbg を正しく使用しているかどうかについても確信が持てなくなりました。どんな助けでも大歓迎です。
別の編集テスト VM の仮想シリアル ポートをホスト ファイルに接続しようとしましたが、ファイルにデバッグ出力がいくつかあります。2 つの VM の仮想シリアル ポートをホスト パイプを指すように設定し、Dev VM で (WinDbg ではなく) ターミナルを実行しようとしましたが、ターミナルでデバッグ情報を取得しました。
これは間違いなく VirtualBox ではなく WinDbg の問題であると判断したと思います (virtualbox タグを削除して、windbg に置き換えます)。
詳細: VirtualBox 4.2.4 へのアップグレード (バージョンが重要かどうかは不明) をアップグレードしたばかりで、これをもう一度確認しました。
テスト用の VM を再構築したところ、さらに辛抱強くなりました。
テスト VM が実行されているように見えますが、最終的には windbg ウィンドウに何らかの出力が表示されますが、デバッグ対象の OS が起動するまでに約 15分かかります。これは、日常のカーネル デバッグには明らかに役に立ちません。なぜこれがそんなに遅くなるのかわからない.windbgの代わりにdev VMで単純な端末を実行しても、認識できるほどの速度低下はありません(もちろん、デバッグ情報はほとんどゴミです)。
何か案は?