プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

[書評] 実践デバッグ技法 このエントリーをはてなブックマークに追加

献本御礼
なんで献本もらえたのかまったく不明なんだけど(^^;

ちまたではデバッグ三部作のトリを飾る一作と呼ばれているらしい。

いちおう、DDDとEclipseについても書いてあるけど、メインはどうみてもgdb。なので、Linux上でC言語開発をする羽目になった新人プログラマが読むと、一気にスキルが上がってお得。
昔、新人教育をやっていた時代にこれがあったら、全員に買わせたかもしれん。

ちょっと、長いけど目次を引用

推薦の言葉
まえがき
1章 初心者にもプロにも役立つ予備知識
1.1 本書で扱うデバッガ
1.2 使用するプログラミング言語
1.3 デバッグの原則
1.3.1 デバッグの本質:確認の原則
1.3.2 確認の原則にとってデバッガの価値とは?
1.3.3 その他のデバッグ原則
1.4 テキストベース vs. GUIベース(そして両者の折衷形態)
1.4.1 インタフェースの簡単な比較
1.4.2 テキストベースとGUIの折衷形態
1.5 デバッガの主な操作方法
1.5.1 ソースコードをステップ実行する
1.5.2 変数を調べる
1.5.3 変数の変化を「広域指名手配」する
1.5.4 呼び出しスタックを上下に移動する
1.6 オンラインヘルプ
1.7 最初のデバッグ作業
1.7.1 GDBを用いる
1.7.2 DDDを使った実演
1.7.3 Eclipseを使った実演
1.8 初期化ファイルの使用
2章 調査のために実行を止める
2.1 停止の仕組み
2.2 ブレークポイントの概要
2.3 ブレークポイントを追跡する
2.3.1 GDBでのブレークポイント一覧
2.3.2 DDDでのブレークポイント一覧
2.3.3 Eclipseでのブレークポイント一覧
2.4 ブレークポイントを設定する
2.4.1 GDBでブレークポイントを設定する
2.4.2 DDDでブレークポイントを設定する
2.4.3 Eclipseでブレークポイントを設定する
2.5 GDBの発展例題
2.6 ブレークポイントの持続性
2.7 ブレークポイントを削除・無効にする
2.7.1 GDBでブレークポイントを削除する
2.7.2 GDBでブレークポイントを無効にする
2.7.3 DDDでブレークポイントを削除・無効にする
2.7.4 Eclipseでブレークポイントを削除・無効にする
2.7.5 DDDでブレークポイントを「移動する」
2.7.6 DDDでブレークポイントの操作を元に戻す/やり直す
2.8 ブレークポイントの属性を詳しく見る
2.8.1 GDB
2.8.2 DDD
2.8.3 Eclipse
2.9 実行を再開する
2.9.1 GDB
2.9.2 DDD
2.9.3 Eclipse
2.10 条件つきブレークポイント
2.10.1 GDB
2.10.2 DDD
2.10.3 Eclipse
2.11 ブレークポイント・コマンドリスト
2.12 ウォッチポイント
2.12.1 ウォッチポイントを設定する
2.12.2 式
3章 変数を調査・設定する
3.1 メインの例題コード
3.2 上級の変数調査・設定法
3.2.1 GDBでの調査法
3.2.2 DDDでの調査法
3.2.3 Eclipseでの調査法
3.2.4 動的な配列を調べる
3.2.5 C++ではどうなるの?
3.2.6 ローカル変数を監視する
3.2.7 メモリを直接調べる
3.2.8 printとdisplayの上級オプション
3.3 変数を設定する
3.4 GDB独自の変数
3.4.1 値の履歴を用いる
3.4.2 簡易変数
4章 プログラムがクラッシュしたら
4.1 背景知識:メモリ管理について
4.1.1 なぜプログラムはクラッシュするのか?
4.1.2 プログラムのメモリ配置
4.1.3 ページの概念
4.1.4 ページテーブルの役割の詳細
4.1.5 軽微なメモリアクセスのバグはセグメンテーション違反に
   ならないこともある
4.1.6 セグメンテーション違反とUnixのシグナル
4.1.7 他の種類の例外
4.2 coreファイル
4.2.1 coreファイルの生成方法
4.2.2 シェルによるcore生成の抑制
4.3 例題の拡張
4.3.1 最初のバグ
4.3.2 デバッグ中はGDBを抜けないこと
4.3.3 2番目と3番目のバグ
4.3.4 4番目のバグ
4.3.5 5番目と6番目のバグ
5章 多重実行環境でのデバッグ
5.1 クライアント/サーバ型のネットワークプログラムをデバッグする
5.2 スレッドコードをデバッグする
5.2.1 プロセスとスレッドのおさらい
5.2.2 基本的な例題
5.2.3 バリエーション
5.2.4 GDBのスレッドコマンドのまとめ
5.2.5 DDDのスレッドコマンド
5.2.6 Eclipseのスレッドコマンド
5.3 並列実行アプリケーションをデバッグする
5.3.1 メッセージパッシングシステム
5.3.2 共有メモリシステム
5.4 拡張した例題
5.4.1 OpenMPの概要
5.4.2 OpenMP例題プログラム
6章 特別な話題
6.1 コンパイルもロードもできないときにはどうすればいいですか?
6.1.1 文法エラーメッセージの実体のない行番号
6.1.2 ライブラリが見つからない
6.2 GUIプログラムをデバッグする
6.2.1 cursesプログラムをデバッグする
7章 他のツール
7.1 テキストエディタを活用する
7.1.1 文法ハイライト
7.1.2 カッコの対応づけ
7.1.3 VimとMakefile
7.1.4 Makefileとコンパイラの警告メッセージ
7.1.5 テキストエディタをIDEとみなす最終的な考え
7.2 コンパイラを活用する
7.3 C言語でのエラー報告
7.3.1 errnoを用いる
7.4 straceとltraceを使った快適な暮らし
7.5 静的コードチェッカ:lintとその仲間
7.5.1 splintの使い方
7.5.2 最後に
7.6 動的確保メモリをデバッグする
7.6.1 DAMの問題を発見する戦略
7.6.2 Electric Fence
7.6.3 GNU Cライブラリのツールを使ってDAMの問題をデバッグする
8章 他の言語にGDB、DDD、Eclipseを用いる
8.1 Java
8.1.1 JavaをデバッグするのにGDBを直接用いる
8.1.2 JavaをデバッグするのにDDDをGDBと一緒に使う
8.1.3 DDDをJDBのGUIとして用いる
8.1.4 EclipseでJavaをデバッグする
8.2 Perl
8.2.1 DDDを使ってPerlをデバッグする
8.2.2 EclipseでPerlをデバッグする
8.3 Python
8.3.1 DDDでPythonをデバッグする
8.3.2 EclipseでPythonをデバッグする
8.4 SWIGコードをデバッグする
8.5 アセンブリ言語
付録A Visual C++を用いたデバッグ
A.1 ビルドと実行
A.2 中断と変数の表示
A.3 ブレークポイント設定と実行再開
A.4 不正メモリアクセス
A.5 マルチスレッドのデバッグ
A.6 その他の便利な機能
訳者あとがき
索引


最初の方の1-3章ぐらいがデバッガの使い方解説みたいな感じ。gdbのinfoは章立てが腐っているので、同じ事を書いていてもすごく分かりやすく、理解しやすくてよい。

4章が、coreファイルからバグを特定するまでの実例の解説。こういうのって説明が難しいんですよね

5章がこの本の白眉(だと勝手に思っている)マルチスレッド・マルチプロセス環境のデバッグ方法の解説。
近年、CPUのマルチコア化が進み並列化テクニックを使ったソフトウェアが増えてきたけれども、MPI、OpenMPのデバッグ方法を解説した文献はこれが初めてではなかろうか?

6章は、デバッグ効率あげるなら、ツールも大事だよー。という趣旨のTips集。まあ、たいていのTipsはインターネットで見つかるんですが、まあ、まとまっているのが意味があるのかなと。


Debug Hacksは、読者層を絞り込みすぎているので、なかなか人に紹介しにくいという意見を聞くが、こっちは大学生~新人プログラマに対象を絞っているので、会社の若い連中とかに強くオススメできるいい文献となっている気がします。

デバッガを使いこなしていないなー、という諸兄は是非手にとっていただきたい。デバッグ時間の節約は開発効率に直結するよ

ではでは


併せて読みたい、有名人の書評
やねうらおさん: http://d.hatena.ne.jp/yaneurao/20090604
憂鬱な午後のひとときさん: http://homepage1.nifty.com/herumi/diary/latest.html





関連記事


書評 | 【2009-06-06(Sat) 16:10:56】 | Trackback:(0) | Comments:(0)
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。