Amazonや公式サポートHPへのリンクは下記エントリを参照: - 技術/Windows/WinDbgメモ -- http://www.glamenv-septzen.net/view/706 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での解説となっている点も留意しておくべき。 #more|| ---- 以下、読んでて「へぇ~~へぇ~~」ボタンを押したくなったページのピンポイントメモ。 : 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