Effective Debugging

―ソフトウェアとシステムをデバッグする66項目

[cover photo]
TOPICS
Programming
発行年月日
PRINT LENGTH
252
ISBN
978-4-87311-799-7
原書
Effective Debugging
FORMAT
PDF
Print
3,520円
この商品は品切れ再入荷未定です

数々の人気の技術書の著者として、さらには数多くのオープンソースの開発や教育活動で名高いコンピュータ科学者ディオミディス・スピネリスの最新刊。心構えから思考法、Gitなどシステムを使った方法論、システムの開発から保守運用に至る戦略、並列処理も含めた技法、コマンドラインを駆使したツール、ハードの扱いまで含めたヒントなどさまざまな角度からデバッグの本質に迫ります。有効なデバッグ手法を体系的に網羅し、すぐに応用できる具体例も多く挙げられています。デバッグの感覚とスキルを高めることによって、開発効率を改善し、高品質のコードを書くことが可能となります。作業効率と品質を向上させたい全プログラマ必読の一冊です。

目次

日本語版まえがき
まえがき

1章 高水準戦略
    項目1:あらゆる問題を課題管理システムで扱う
    項目2:問題に対する洞察を得るにはウェブで焦点を絞って検索する
    項目3:前条件と後条件が満たされていることを確認する
    項目4:問題からバグをドリルアップするかプログラムの先頭からバグへドリルダウンする
    項目5:既知の正常なシステムと問題を起こしているシステムとの違いを検出する
    項目6:ソフトウェアのデバッグ機能を使う
    項目7:ビルドと実行環境を多様化する
    項目8:作業の焦点を最も重要な問題に絞る

2章 汎用の手法と実践
    項目9:デバッグを成功させるために心の準備をする
    項目10:問題の効率的な再現を可能にする
    項目11:変更から結果までのターンアラウンド時間を最小化する
    項目12:複雑なテストシナリオを自動化する
    項目13:デバッグデータを包括的に概観する
    項目14:ソフトウェアのアップデートを考える
    項目15:サードパーティソースコードを調べて洞察を得る
    項目16:特別な監視およびテスト装置を使う
    項目17:失敗による結果をさらに際立たせる
    項目18:手に負えないシステムのデバッグを自分のデスクで行えるようにする
    項目19:デバッグタスクを自動化する
    項目20:デバッグの前後で大掃除をする
    項目21:問題を起こすクラスのすべてのインスタンスを修正する

3章 汎用ツールと技法
    項目22:デバッグデータをUnixコマンドラインツールで分析する
    項目23:コマンドラインツールのオプションとイディオムを活用する
    項目24:デバッグデータをエディタで調べる
    項目25:作業環境を最適化する
    項目26:バグの原因と経緯とをバージョン管理システムで探す
    項目27:独立なプロセスからなるシステムの監視ツールを使う

4章 デバッガ技法
    項目28:シンボリックデバッグ用にコンパイルしたコードを使う
    項目29:コードをステップ実行する
    項目30:コードとデータのブレークポイントを活用する
    項目31:逆デバッグ機能をよく知っておく
    項目32:ルーチン間の呼び出しに沿って探索する
    項目33:変数と式の値を調べてエラーを見つける
    項目34:実行プロセスにどのようにデバッガをアタッチするかを知っておく
    項目35:コアダンプの扱い方を知っておく
    項目36:デバッグツールを整備する
    項目37:アセンブラコードとハードのメモリ内容を確認する方法を知っておく

5章 プログラミング技法
    項目38:怪しいコードをレビューして手動で実行する
    項目39:コードとその内容を同僚に説明する
    項目40:デバッグ機能を追加する
    項目41:ロギング文を追加する
    項目42:ユニットテストを使う
    項目43:アサーションを使う
    項目44:デバッグしたプログラムに変動を与えて推理を検証する
    項目45:稼働例と問題コードとの相違を最小化する
    項目46:怪しいコードを単純にする
    項目47:怪しいコードを他の言語で書き直す
    項目48:怪しいコードの可読性と構造を改善する
    項目49:バグの症状を取り除くのではなく、原因を取り除く

6章 コンパイル時の技法
    項目50:生成コードを調べる
    項目51:静的プログラム解析ツールを使う
    項目52:ビルドと実行を決定的に構成する
    項目53:デバッグライブラリを使用してチェックするよう構成する

7章 実行時の技法
    項目54:テストケースを作って問題を発見する
    項目55:迅速に失敗させる
    項目56:アプリケーションのログファイルを調べる
    項目57:システムとプロセスの演算操作のプロファイルをとる
    項目58:コード実行をトレースする
    項目59:動的なプログラム解析ツールを使う

8章 マルチスレッドコードのデバッグ
    項目60:デッドロックを事後検討デバッグで分析する
    項目61:キャプチャして複製する
    項目62:専用ツールでデッドロックと競合条件を見つける
    項目63:非決定性を切り分けて取り除く
    項目64:競合制約状態を調べてスケーラビリティ問題を検討する
    項目65:性能カウンタを使ってフォールスシェアリングを探す
    項目66:高水準な抽象化を用いてコードを書き直すことを検討する

訳者あとがき
索引