ビジネス WinDbgアプリケーション開発技術 イメージロード(ユーザモードとカーネルモード)


カーネルデバッガー「WinDbg」とはいったい何なのか?

 カーネルデバッガー「WinDbg」とはいったい何なのか?WinDbgは、Microsoft社内開発者用のツールです。しかし、このツールは無料ダウンロード可能となっており、Microsoftはこの数年、社外向け情報提供量を急激に増やしています。その上、WinDbgは、頻繁にバージョンアップされ、基本的に、ほぼすべてのWindowsバージョンで動作します。動作しない場合、Microsoft社内のコアー開発者たちはWindowsの改善作業ができないことになります。この意味では、最も信頼できるWindowsアプリケーションの一つかもしれません。カーネルデバッガー「WinDbg」は、Microsoftを代表するWindowsアプリケーションの一つといっても過言ではないでしょう。

 WinDbgは多数のコマンドを備えています。PCI Express、BIOS、あるいは、マルチコアーなどの国際/業界標準仕様が新たに策定されれば、その仕様は新たなWinDbgコマンドを当然生み出します。Microsoftは最新仕様にきわめて敏感なソフトウェアベンダーです。世の中の動きに応じて次々に生み出される多数のWinDbgコマンドを覚え切るのは不可能です。さらに、Windowsシステム内部を分析する場合には、複数のコマンドを設定した条件の下で連続実行するWinDbgスクリプティング(WinDbgアプリケーション開発)技術が必要です。この技術に関する体系化された情報はほとんどありません。

 Windowsは多数のカーネルオブジェクト(正確には、ExecutiveオブジェクトとKernelオブジェクト)を持っています。それらのオブジェクトは、基礎となるシステム構造体インスタンスの集合体です。個々の構造体は多数のメンバーフィールドを持ちます。フィールドの値は時々刻々変化し、Windowsカーネルはそれらの値を更新・参照しながら動作しています。ハンドル数が増え続け、減ることがない。ハンドルリークが発生しているかもしれません。なら、メモリがどんどん減り続け、パフォーマンスは低下し、いつしかシステムはクラッシュします。

 WinDbgは、メモリ内のカーネル構造体フィールドの変化を監視する機能を提供しています。この機能はたいへん強力なものですが、システム状態の監視機能やクラッシュ原因の分析機能を効率的に実装するWinDbgアプリケーション開発手法に関する具体的な技術情報は、自力で探し出し、体系化する以外にありません。インターネット空間のところどころにはそれらしき情報が散見されますが、体系化されているわけではありません。それゆえ、多くの人はWinDbgアプリケーションの有効性と魅力に気づく前に、たいへん不幸なことに、挫折していると思われます。

 MicrosoftのTechnical Fellowを務めるMark Russinovich氏は、Windows内部を詳しく解説し、折に触れ、便利なWinDbgコマンドを紹介してくれています。ところが、WinDbgアプリケーションの開発方法には一切触れていません。筆者はWinDbgアプリケーション開発方法の体系化に成功し、日々多数のWinDbgアプリケーションを「効率的、かつ、楽しく」開発しながら、パフォーマンス分析、マルウェア検出、動作異常プロセス検出、納品直前のWindowsアプリケーション分析、Windowsシステム診断、および、Windowsシステムやクラッシュダンプファイルの分析処理を自動化しています。このレベルの分析処理は、WinDbgコマンドを覚えるだけではほとんど意味がありません。WinDbgコマンドベースの分析作業は、とにかく非効率的で、面白みはまったくありません。

前へ | WinDbgスクリプティング講座



 WinDbg入門  ホーム


Copyright©豊田孝 2004- 2009
本日は2009-01-06です。