2012-01-04 11 views
2

このトピックについてのネット上の情報はあまりないようです。Ring0(カーネルモード)デバッガはどのように実装されていますか?

誰かがカーネルモードのデバッガーの背後にある一般的な考え方が であり、そのようなツールはどのように実装されているのか説明できますか?私が集めたものから、 は、ユーザーOSの下で を排他的に実行するデバッガ専用の小さなオペレーティングシステムを実装していますが、私はあまりよく分かりません。

ありがとうございます。

答えて

2

もう1つのステルスOSを実装してOSカーネルをデバッグする必要はありません。デバッグ中のカーネルがまだ生きている限り、スレッドを実行し、それらを停止して再開することができます(システムがマルチプロセッサの場合はもちろん、すべてのCPU上で)。コンソールや専用I/Oポート、何か、それだけで十分です。

カーネルスレッドのブレークポイントの設定は、通常、ユーザースレッドと同じ方法で行われます。メモリの読み書きもそうです。

デバッガが実際に実行される余分なPCを使用して、カーネルのデバッグを行うと便利です。 2台のPCは、シリアル、1394、USBまたはネットワーク接続を使用して接続できます。 debuggeeは、デバッグポートでデバッグコマンドをリッスンし、適切に応答するように構成する必要があります(例:実行の停止/再開、メモリの読み込み/書き込み、ブレークポイントの設定/リセットなど)。デバッガには、他の既存のスレッドを先取りして要求されたデバッグコマンドを実行するために専用のデバッガスレッド(またはスレッドに類似したもの)が必要です(上で概説)。

関連する問題