Amazonや公式サポートHPへのリンクは下記エントリを参照:
Windows SDK や Windows Driver Kit (WDK) にもれなく付いてくる"Debugging Tools for Windows"を中心に、MS社謹製の各種デバッグ・解析支援ツールを駆使したWindowsアプリのデバッグ方法を詳しく解説してくれている。
主な構成:
- Part1 : 各種ツールの紹介、WinDBGのイロハ、Debug系APIとデバッガの内部構造、シンボルファイルの取扱とビルド・リリースサイクルとの連携
- Part2 : 主なデバッグ場面・カテゴリ毎に基本的な手法や各種ツールを使った効率化などが紹介されている。スタック、ヒープ、セキュリティ、COMやRPC、メモリやハンドルなどのリーク、同期処理などを扱っている。
- Part3 : WinDBGの拡張機能を使って独自機能を追加する方法、64bit環境の特色、ダンプファイルの取得、DebugDiagや"!analyze"コマンドの紹介、Windows Vistaにおける注意点
Windows用のデバッガは他にもOllyDbgやImmunityDebugger, IDA Proなどあるが、MS社謹製である点、Windowsカーネルに特化したショートカットコマンドが充実している点、さらに64bitにも対応している点から、"Debugging Tools for Windows"は是非とも道具箱に入れておきたい。
しかしWindowsカーネルすらデバッグできるツールである以上、公式ヘルプドキュメントの量は詳細にして膨大であり、コマンドも多すぎる。その都度Web上で検索して使い方を学んでいこうとすると、どうしても継ぎ接ぎや付け焼刃の知識になり不安が残る。
"Advanced Windows Debugging"はWinDBGや各種ツールを効率的に活用していくための、体系的かつ「王道」なテクニック・ノウハウが詰め込まれているので、一読に値する内容となっている。ひと通り体に染み込ませた後なら、ヘルプドキュメントを開いてその分量に圧倒されること無く、目的の機能を調べることが出来るようになっているだろう。
なお、Windows XP SP2公開 - Windows Vista 発売位迄を対象としているため、WinXP SP3での変更点やWindows7まではフォローしきれていない点に注意が必要。またPart1, Part2ともに32bitOSでの解説となっている点も留意しておくべき。
以下、読んでて「へぇ~~へぇ~~」ボタンを押したくなったページのピンポイントメモ。
- Start up Windows OS with Kernel Debug Options
- p38, boot.ini, bootcfg.exe
- Overview of Private/Public Symbols
- p50-51
- Symbol reloading, lm command, Validating Symbols
- p57-
- Debug Event -> stop "All Threads" in debugged process
- p125 "Debugger Loop"
- Event Handling Alias and Command Line Settings
- p135-p140
- dump PE headers -> "!dh" generic extension command
- p60
- Overview of (Structured) Exception Handling
- p151-159
- HowTo Debug EXE Loading Process ? (with kernel debug)
- p166
- Remarks & Cautions for Kernel Mode Breakpoints
- p169
- Suspend/Freeze other threads in event handling
- p173-
- Mysterious "mov edi, edi" in Function Prolog
- p221
- What is "deadf00d" ? ("deadf01d", "deadf02d", ...)
- p284
- "ABCDAAAA", "ABCDBBBB", "DCBABBBB", ... in Heap
- p293
- Internal Lock Cautions about DllMain, dll loading problems
- p529
プレーンテキスト形式でダウンロード
コメント