マイクロソフト公式解説書<br> Windowsプログラマのためのデバッグテクニック徹底解説

  • ポイントキャンペーン

マイクロソフト公式解説書
Windowsプログラマのためのデバッグテクニック徹底解説

  • ただいまウェブストアではご注文を受け付けておりません。
  • サイズ B5判/ページ数 517p/高さ 24cm
  • 商品コード 9784891001865
  • NDC分類 007.64
  • Cコード C3055

出版社内容情報

[目次詳細]

謝辞
日本語版に寄せて
序文
はじめに

第1部 デバッグにおけるゲシュタルト
-------------------------------------------------

第1章 バグとは
   1.1 バグとデバッグ
      1.1.1 バグの定義
      1.1.2 プロセスバグとソリューション
      1.1.3 技術的な無知
      1.1.4 計画的なデバッグ
   1.2 デバッグ作業と前提知識
      1.2.1 スキルセット
      1.2.2 スキルセットの習得
   1.3 デバッグプロセス
      1.3.1 ステップ1:バグを再現する
      1.3.2 ステップ2:バグ内容を書き留める
      1.3.3 ステップ3:バグの原因は自分にあるとする
      1.3.4 ステップ4:細分化し、征服する
      1.3.5 ステップ5:創造的に考える
      1.3.6 ステップ6:ツールを活用する
      1.3.7 ステップ7:詳細デバッグを開始する
      1.3.8 ステップ8:バグを除去したことを検証する
      1.3.9 ステップ9:記録する
      1.3.10 デバッグ秘儀
   まとめ

第2章 デバッグ入門
   2.1 変更内容の追跡
      2.1.1 バージョンコントロールシステム
      2.1.2 バグトラッキングシステム
      2.1.3 最適なシステムの選択
   2.2 デバッグシステムの構築スケジュール
      2.2.1 デバッグシンボルのビルド
      2.2.2 警告とエラー
      2.2.3 DLLのロード位置
      2.2.4 リリースビルドと軽量な診断システム
   2.3 ビルド作業とスモークテスト
      2.3.1 ビルド処理の繰り返し
      2.3.2 スモークテスト
   2.4 インストールプログラムのビルド
   2.5 QAとデバッグビルド
   まとめ

第3章 コーディングとデバッグ
   3.1 アサートの重要性
      3.1.1 アサート条件の定義
      3.1.2 Visual C++とVisual Basicの相違
      3.1.3 私のSUPERASSERT
   3.2 TRACEの重要性
   3.3 コメントの重要性
   3.4 信頼と検証
   まとめ

第2部 デバッグパワーテクニック
-------------------------------------------------

第4章 デバッガの動作背景
   4.1 Windowsデバッガの種類
      4.1.1 ユーザーモードデバッガ
      4.1.2 カーネルモードデバッガ
   4.2 Windows 2000と被デバッグプロセスサポート
      4.2.1 Windows 2000のヒープチェック
      4.2.2 デバッガの自動起動
      4.2.3 クイックブレークキー
   4.3 単純なWin32デバッガMinDBG
   4.4 実用レベルのデバッガWDBG
      4.4.1 メモリへの読み出し/書き込み処理
      4.4.2 ブレークポイントとシングルステップ動作
      4.4.3 シンボルテーブル、シンボルエンジン、そしてスタック検索
      4.4.4 ステップイン、ステップオーバー、ステップアウト
      4.4.5 WDBGが抱える興味ある問題
   4.5 デバッガを自作する方法
   4.6 WDBG改良指針
   まとめ

第5章 Visual C++デバッガを使ったパワーテクニック
   5.1 高度なブレークポイント設定機能
      5.1.1 高度なブレークポイント設定構文とロケーションブレークポイント
      5.1.2 任意の関数へのクイックブレークポイント設定方法
      5.1.3 システムやエクスポート関数へのブレークポイントの設定方法
      5.1.4 ロケーションブレークポイント修飾子
      5.1.5 グローバル式と条件ブレークポイント
      5.1.6 Windowsメッセージブレークポイント
   5.2 リモートデバッグ
   5.3 高度なテクニックとヒント
      5.3.1 ブレークポイントの設定
   5.3.2 [ウォッチ]ウィンドウ
   5.3.3 自作データ型の自動展開機能
   5.3.4 [次に実行するステートメント]コマンド
   5.3.5 Visual Basicのコンパイル済みコードのデバッグ
   まとめ

第6章 Visual C++デバッガの [混合モード]ウィンドウとx86アセンブリ言語
   6.1 CPUの基礎
      6.1.1 レジスタ
      6.1.2 命令フォーマットとメモリアドレッシング
   6.2 Visual C++インラインアセンブラの基礎
   6.3 理解しておくべきアセンブリ言語命令
      6.3.1 スタック操作命令
      6.3.2 基本中の基本命令
      6.3.3 パターンを持つシーケンス:関数の入口と出口
      6.3.4 変数へのアクセス:グローバル変数、パラメータ、およびローカル変数
      6.3.5 プロシージャ呼び出しと復帰
   6.4 呼び出し規約
      6.4.1 呼び出し規約サンプルプログラム
   6.5 その他の知っておくべき命令
      6.5.1 データ操作命令
      6.5.2 ポインタ操作命令
      6.5.3 比較とテスト命令
      6.5.4 ジャンプと分岐命令
      6.5.5 ループ
      6.5.6 文字列操作命令
   6.6 よく使用されるアセンブリ言語構造ブロック
      6.6.1 FSレジスタへのアクセス
      6.6.2 構造体とクラス参照
   6.7 完全な関数サンプル
   6.8 [混合モード]ウィンドウ
      6.8.1 ウィンドウ巡回
      6.8.2 スタック上のパラメータ表示
      6.8.3 [次に実行するステートメント]コマンド
      6.8.4 [メモリ]ウィンドウと[混合モード]ウィンドウ
   6.9 高度なヒント
      6.9.1 エンディアン
      6.9.2 ガーベッジコード
      6.9.3 [レジスタ]ウィンドウと[ウォッチ]ウィンドウ
      6.9.4 ASMファイル情報の利用
   まとめ

第7章 Visual Basicデバッガの使い方
   7.1 Visual Basicのpコード
      7.1.1 pコードの歴史が語る教訓
      7.1.2 pコードを使用する意味
   7.2 エラートラップオプション
      7.2.1 [エラー発生時に中断]オプション
      7.2.2 [エラー処理対象外のエラーで中断]オプション
      7.2.3 [クラスモジュールで中断]オプション
      7.2.4 エラートラッピング機能への改善要求
   7.3 Visual Basicのデバッガウィンドウ
      7.3.1 [ローカル]ウィンドウ
      7.3.2 [イミディエイト]ウィンドウ
      7.3.3 [ウォッチ]ウィンドウ
   7.4 高度なヒント
      7.4.1 [カーソル行の前まで実行]コマンドについて
      7.4.2 順次コンパイルの回避
      7.4.3 グループプロジェクトの使用
      7.4.4 Visual Basicでのデバッグと現実との矛盾
   まとめ

第3部 創造的なデバッグテクニック
-------------------------------------------------

第8章 クラッシュアドレスとソース情報
   8.1 MAPファイルの作成と解読
      8.1.1 MAPファイルの内容
      8.1.2 関数、ソースファイル、行番号の見つけ方
   8.2 CrashFinderの使用法
      8.2.1 CrashFinder実装コードの特徴
   8.3 CrashFinderを改善するためのヒント
   まとめ

第9章 クラッシュハンドラ
   9.1 構造化例外処理とC++例外処理
      9.1.1 構造化例外処理(SEH)
      9.1.2 C++例外処理
      9.1.3 SEHとC++例外処理の併用
   9.2 SetUnhandledExceptionFilter API関数
   9.3 CrashHandler APIの呼び出し
   9.4 EXCEPTION_POINTERS構造体の変換作業
   まとめ

第10章 Windows 2000サービスと関連DLLのデバッグ作業
   10.1 サービスの基礎
      10.1.1 サービス固有のAPI
      10.1.2 サービスとセキュリティ
   10.2 サービスのデバッグ
      10.2.1 コアとなるコードのデバッグ
      10.2.2 基本サービスのデバッグ
      10.2.3 サービスデバッグツールの選択
   まとめ

第11章 マルチマシンとマルチプロセスのトレース
   11.1 TraceSrv仕様案件
   11.2 TraceSrvとDCOMCNFG
   11.3 TraceSrvとバグ
   11.4 TraceViewとWin32セキュリティ
   11.5 TraceSrvの使用法
   まとめ

第12章 マルチスレッドデッドロック
   12.1 マルチスレッドプログラミングのための秘儀
      12.1.1 マルチスレッド化の回避
      12.1.2 小さな個別部品のマルチスレッド化
      12.1.3 低レベルでのスレッド同期
      12.1.4 コードの繰り返し検証
      12.1.5 複数プロセッサマシン上でのテスト
   12.2 DeadlockDetection仕様案件
   12.3 DeadlockDetectionと設計上の高度な問題
   12.4 DeadlockDetectionの使用方法
   12.5 DeadlockDetectionの実装
      12.5.1 インポート関数のフッキング
      12.5.2 実装上の特徴
   12.6 DeadlockDetectionの機能アップ用ヒント
   まとめ

第13章 テストの自動化
   13.1 単体テストとユーザーインターフェイス
   13.2 Testerの仕様案件
   13.3 Testerの使用法
   13.4 Testerの実装
   13.5 Testerを改善するためのヒント
   まとめ

第14章 デバッグ版Cランタイムライブラリ
   14.1 デバッグCランタイムライブラリの機能
   14.2 デバッグCランタイムライブラリの応用
   14.3 正しいCランタイムライブラリの選択
   14.4 MemDumperValidatorの使用法
      14.4.1 C++とMemDumperValidator
      14.4.2 CとMemDumperValidator
      14.4.3 より高精度なメモリ検証
   14.5 MemDumperValidatorの実装
      14.5.1 C++と初期化/終了処理
      14.5.2 リークレポートの表示
   14.6 MemStressの使用法
      14.6.1 おもしろいストレス問題
   まとめ

付録 参考資料
監訳を終えて
索引

内容説明

プログラムにバグが入り込むのをどのように防いだらよいか。プログラミングを始める前に、バグの発生原因を取り除ければなんとすばらしいことか。デバッグの専門家と普通のプログラマを明確に分ける技術とは何か。本書は、プログラミングを始める前に取り得る強力なデバッグ技法を詳述しています。仕様の設計段階でバグの発生原因を取り除くことによって、出荷する製品が顧客に到着する前に、ソースレベルでバグを検出し、除去することができます。デバッグの専門家であるJohn Robbinsは、メモリ関連エラー、スレッド関連エラー、そしてマルチスレッド展開時のデッドロックエラーまであらゆる問題を解決するための、実体験に基づいた強力かつ効果的な技法を惜しげもなく披瀝してくれます。

目次

第1部 デバッグにおけるゲシュタルト(バグとは;デバッグ入門;コーディングとデバッグ)
第2部 デバッグパワーテクニック(デバッガの動作背景;Visual C++デバッガを使ったパワーテクニック;Visual C++デバッガの〔混合モード〕ウィンドウとx86アセンブリ言語 ほか)
第3部 創造的なデバッグテクニック(クラッシュアドレスとソース情報;クラッシュハンドラ;Windows2000サービスと関連DLLのデバッグ作業 ほか)

著者等紹介

ロビンズ,ジョン[Robbins,John]
Wintellect創業者の1人。同社は、開発者にコンサルティングサービスを提供するとともに、教育セミナーを世界各地で開いている。Wintellectではコンサルティングとデバッグ分野の業務を担当し、アプリケーション深部に潜む深刻なバグを取り除く作業をサポートし、高品質製品の迅速な出荷を支援。「Debugging Windows Applications」というデバッグセミナーを世界中の会社で開催し、好評を博している。また、『MSDN Magazine』の社外編集者としても活躍
※書籍に掲載されている著者及び編者、訳者、監修者、イラストレーターなどの紹介情報です。