2009,08,28 Friday
仮想マシンの名前付きパイプ接続を使ってWinDbgとの接続実験をしてみました。
とりあえず、Windows XP SP3 (x86)の環境下で
Sun VirtualBox、VMware Player、VMware Workstation(v6.5)の3つで試した結果。
VMware Workstationのみ接続を確認出来ました。
VMware系での接続を確認しました。
VirtualBoxはWindowsでの名前付きパイプでの接続方法の資料が見つからず、接続出来ているか怪しい。
VMware Playerは名前付きパイプでの設定は出来るが
GesutOS起動時に何故か怒られて接続出来ない。これは設定が怪しい・・・。
VMware Playerでの名前付きパイプでの接続を確認。やはり設定に問題がありました。
Web上でのWinDbg動作確認報告が多いVMware Workstationだと問題なく動作確認出来ました。
その時の設定は以下のとおり。
ちなみに、VMwareの構成ファイルであるvmxファイルの中は以下のとおり。
WinDbg側の設定は以下のとおり。
仮想マシン上でOSをデバッグモードで起動し
WinDbgからPIPE接続でKernelDebugを開始すると1台の端末でデバイスドライバの
開発からデバッグおよび動作確認を楽々行う事が出来ます。
但し、WinDbgでソース上にDbgBreakPoint()を記載してソースデバッグ等を行った場合は
デバイスドライバをコンパイルした際に出力される.pdb(Program Debug Database)ファイルが
WinDbgに使用されているため、そのままドライバの再コンパイルを行った際にリンケージで失敗します。
その場合は、一度WinDbg側でBreakをして停止して、WinDbgを終了させた上で終了し再コンパイルを行う。
再びWinDbgを開始するとBreakした状態からデバッグを再スタートする事が出来る。
(WinDbgを終了する際にSessionを保持しないといけないかも・・・[未確認]
とりあえず、仮想マシンを使ったデバイスドライバの開発が一番スマートかつ安全な環境だと思う。
特に、VMware WorkstationのようにSnapshot機能で元の状態に戻せるのは
ブルースクリーンから逃れられなくなるといった精神的な負担も減らしてくれる(笑
欲を言えば、VirtualBox上でWindowsの名前付きパイプ接続が出来れば
お金が掛からなくて良いんだけど・・・誰か情報ありません?
とりあえず、Windows XP SP3 (x86)の環境下で
Sun VirtualBox、VMware Player、VMware Workstation(v6.5)の3つで試した結果。
VMware系での接続を確認しました。
VirtualBoxはWindowsでの名前付きパイプでの接続方法の資料が見つからず、接続出来ているか怪しい。
GesutOS起動時に何故か怒られて接続出来ない。これは設定が怪しい・・・。
VMware Playerでの名前付きパイプでの接続を確認。やはり設定に問題がありました。
Web上でのWinDbg動作確認報告が多いVMware Workstationだと問題なく動作確認出来ました。
その時の設定は以下のとおり。
[X] 起動時に接続
名前付きパイプを使用
・ \\.\pipe\com_1
・ この端末はサーバです。
・ 接続先はアプリケーションです。
[X] ポーリングでCPUを放棄する
ちなみに、VMwareの構成ファイルであるvmxファイルの中は以下のとおり。
serial0.present = "TRUE"
serial0.yieldOnMsrRead = "TRUE"
serial0.fileType = "pipe"
serial0.fileName = "\\.\pipe\com_1"
serial0.tryNoRxLoss = "TRUE"
WinDbg側の設定は以下のとおり。
port : \\.\pipe\com_1
baudrate : 115200
pipe : true
reconnect : true
仮想マシン上でOSをデバッグモードで起動し
WinDbgからPIPE接続でKernelDebugを開始すると1台の端末でデバイスドライバの
開発からデバッグおよび動作確認を楽々行う事が出来ます。
但し、WinDbgでソース上にDbgBreakPoint()を記載してソースデバッグ等を行った場合は
デバイスドライバをコンパイルした際に出力される.pdb(Program Debug Database)ファイルが
WinDbgに使用されているため、そのままドライバの再コンパイルを行った際にリンケージで失敗します。
その場合は、一度WinDbg側でBreakをして停止して、WinDbgを終了させた上で終了し再コンパイルを行う。
再びWinDbgを開始するとBreakした状態からデバッグを再スタートする事が出来る。
(WinDbgを終了する際にSessionを保持しないといけないかも・・・[未確認]
とりあえず、仮想マシンを使ったデバイスドライバの開発が一番スマートかつ安全な環境だと思う。
特に、VMware WorkstationのようにSnapshot機能で元の状態に戻せるのは
ブルースクリーンから逃れられなくなるといった精神的な負担も減らしてくれる(笑
欲を言えば、VirtualBox上でWindowsの名前付きパイプ接続が出来れば
お金が掛からなくて良いんだけど・・・誰か情報ありません?
| Programming::WDK | comments (0) |
コメント
コメントする
TOP PAGE △






