2009年5月14日木曜日

Windowsデバッグの極意

なんかいつのまにやら1年近くも何も書かずにいるではないか。

ちょっといろいろ精神的にきついことが多いんだけど、なんとかまた書くようにがんばろう。

で、最近作った本の紹介をば。






これは翻訳書で、原著は"Advanced Windows Debugging"というAddison-Wesleyから出ている本だ。

なぜかAmazonに全然本の内容に関する情報が上がっていないので、少し書いておこう。

著者は二人ともMicrosoftのエンジニアだ。

Mario HewardtはMicrosoftCorporationのシニアデザインエンジニアで、過去9年間に渡ってWindowsのシステムレベル開発の分野で精力的に仕事をしてきた。Windowsの5回のリリース(Windows 98以降)を通じて、彼は主としてサーバーとデスクトップ管理の分野の仕事をしてきた。彼は、製品の信頼性、堅牢性、安全性を保証するための仕事に多くの時間を割いている。



Daniel PravatはMicrosoft Corporationのシニアデザインエンジニアで、複数のWindowsリリースで数種のWindowsコンポーネントのリリースに深く関わっている。Microsoftに入社する前は、電話サーバーとして機能するコンピュータのための電子通信ソフトウェアを開発していた。すべてのソフトウェアが信頼性、予測可能性、効率性を備えたものになることを目指している。


内容は、タイトル通りWindowsのデバッグのやり方をごりごりと解説したもの。ただし、Visual Studioを使ったデバッグ方法の解説はない。
Visual Studioではどうにもならないようなバグを追いかけるやり方について書かれた本とも言える。
さまざまなツール(ほとんどはMicrosoftのサイトから無料でダウンロードできる)を使って、バグを追いかけ、その原因を突き止める方法をステップバイステップに解説しているので、いざという時には役に立つ本だと思う。

artonさんがブログで紹介してくれている。

http://www.artonx.org/diary/20090503.html#p01

NyaRuRuさんも紹介してくれている。

http://d.hatena.ne.jp/NyaRuRu/20090427/p1


目次を下記にあげておくので、興味を持った人はぜひ本屋さんで手に取ってほしい。

序文
序章
謝辞
著者紹介

1 概観
第1章 ツールの準備
 1.1 リーク診断ツール
 1.2 Debugging Tools for Windows
 1.3 UMDH
 1.4 Microsoft Application Verifier
 1.5 グローバルフラグ
 1.6 Process Explorer
 1.7 Windows Driver Kit
 1.8 Wireshark
 1.9 DebugDiag
 1.10 まとめ
第2章 デバッガ入門
 2.1 デバッガの基本
 2.2 KDすべきか、KDせざるべきか
 2.3 デバッガの基本的な操作方法
 2.4 リモートデバッグ
 2.5 デバッグのシナリオ
 2.6 まとめ
第3章 デバッガの秘密
 3.1 ユーザーモードデバッガの内部構造
 3.2 ターゲットのコントロール
 3.3 まとめ
第4章 シンボルとソースファイルの管理
 4.1 デバッグのためのシンボル管理
 4.2 デバッグのためのソースファイル管理
 4.3 まとめ

2 応用デバッグ
第5章 メモリ破壊パート1―スタック
 5.1 メモリ破壊の検出
 5.2 スタックの破壊
 5.3 まとめ
第6章 メモリ破壊パート2―ヒープ
 6.1 ヒープとは何か
 6.2 ヒープ破壊
 6.3 まとめ
第7章 セキュリティ
 7.1 Windowsのセキュリティの概要
 7.2 セキュリティ情報の入手方法
 7.3 セキュリティチェックはどのようにして行われるか
 7.4 クライアント/サーバーアプリケーションでのIDの伝播
 7.5 システム境界でのセキュリティチェック
 7.6 セキュリティエラーの調査
 7.7 まとめ
第8章 プロセス間通信
 8.1 通信メカニズム
 8.2 ローカル通信のトラブルシュート
 8.3 リモート通信のトラブルシュート
 8.4 その他の技術知識
 8.5 まとめ
第9章 リソースリーク
 9.1 リソースとは何か
 9.2 リソースリークのデバッグプロセスの概要
 9.3 リソースリークの再現性
 9.4 ハンドルリーク
 9.5 メモリリーク
 9.6 まとめ
第10章 同期
 10.1 同期の基礎
 10.2 同期問題のデバッグプロセスの概要
 10.3 同期問題のシナリオ
 10.4 まとめ

3 高度なトピック
第11章 カスタムデバッガエクステンションの開発
 11.1 デバッガエクステンション入門
 11.2 デバッガエクステンションのサンプル
 11.3 まとめ
第12章 64ビットのデバッグ
 12.1 Microsoftの64ビットシステム
 12.2 Windows x64による変更
 12.3 まとめ
第13章 事後デバッグ
 13.1 ダンプファイルの基礎
 13.2 ダンプファイルの使い方
 13.3 WER(Windowsエラー報告)
 13.4 CER(企業内エラー報告)
 13.5 まとめ
第14章 パワーツール
 14.1 デバッグ診断ツール
 14.2 !analyze拡張コマンド
 14.3 まとめ
第15章 Windows Vistaの基礎
 15.1 第1章─ツールの準備
 15.2 第2章─デバッガ入門
 15.3 第6章─メモリ破壊パート2─ヒープ
 15.4 第7章─セキュリティ
 15.5 第8章─プロセス間通信
 15.6 第9章─リソースリーク
 15.7 第10章─同期
 15.8 第11章─カスタムデバッガエクステンションの開発
 15.9 第13章─事後デバッグ
 15.10 まとめ
付録A Application Verifierのテスト設定
 A.1 [Exceptions](例外)
 A.2 [Handles](ハンドル)
 A.3 [Heaps](ヒープ)
 A.4 [Locks](ロック)
 A.5 [Memory](メモリ)
 A.6 [ThreadPool](スレッドプール)
 A.7 [TLS]
 A.8 [FilePaths](ファイルパス)
 A.9 [HighVersionLie](新バージョンのシミュレーション)
 A.10 [InteractiveServices](対話的サービス)
 A.11 [KernelModeDriverInstall](カーネルモードのドライバインストール)
 A.12 [Low Resource Simulation](リソース残量低下のシミュレーション)
 A.13 [LuaPriv](権限の低いアカウントのシミュレーション)
 A.14 [DangerousAPIs](危険なAPI)
 A.15 [DirtyStacks](ダーティ状態のスタック)
 A.16 [TimeRollOver](時間のロールオーバー)
 A.17 [PrintAPI]と[PrintDriver]
索引



0 件のコメント:

コメントを投稿