ひなた先生が教えるデバッグが256倍速くなるテクニック
〜実践的ソフトウェアデバッキングの手法〜

[表紙]ひなた先生が教えるデバッグが256倍速くなるテクニック〜実践的ソフトウェアデバッキングの手法〜

A5判/312ページ

定価(本体1,980円+税)

ISBN 978-4-7741-3668-4

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

SoftwareDesignで連載していた内容を加筆/修正したもの。会話形式で,毎回デバックのポイントとなる題材を絞り(全部で15+@)順序だてて解説する。

解説する内容が,会話形式でとっかかりやすいが,実は失敗しやすい点・意外と知らない点などプログラマが仕事をするうえで,即役に立つ内容となっているため入門者~中級者(上記媒体を読んでいる読者)まで幅広くカバーできる。

こんな方におすすめ

  • プログラマ(デバッグを速くしたい人)
  • デバッグの考え方を知りたい人

著者の一言

本書は,『Software Design』誌での「ひなた先生が教えるデバッグが256倍速くなるテクニック」という連載に加筆してまとめあげたものです。開発よりもデバッグのほうが時間がかかってしまう,というような人にはこの本から得られるものがたくさんあると思います。

目次

第1回 デバッグにおける不確定性原理

  • はじめての出社の巻
  • はじめてのレビューの巻
  • デバッガの使い方の巻
  • ひなた先生との出会いの巻

ケンイチの講義ノート

  • 素数について
  • ステップ実行について
  • 複数のブレークポイントを一度に設定する方法
  • 演算結果を調べるだけなら本当に簡単か?

第2回 バグの発生点と発現点

  • ひなた先生の自己紹介の巻
  • ひなた先生の最初の授業の巻
  • 呼び出しグラフの巻
  • 呼び出し元の特定の巻
  • デバッグに必要なものは?
  • 開発室にて
  • バグが露見した瞬間に停止させよ
  • 呼び出し元の特定の巻
  • 書き換えのテクニック
  • 時間切れ

ケンイチの講義ノート

  • バグの発生からその発見に至るまで
  • Visual C++ 2005/2008ではなくVisual C# 2005/2008ではどうか?

第3回 二分法によるバグ発生地点の絞り込み

  • 毎日が水曜日の巻
  • バグ追跡のための二分法の巻
  • バグ発現の連続性の巻
  • 毎日が仁王立ちの巻
  • 二分検索の自動化の巻
  • ケンイチ,家来になるの巻

ケンイチの講義ノート

  • 二分法によるデバッグ

第4回 コールスタックの活用

  • 毎週水曜日は観音菩薩の日
  • プログラムの中間地点の巻
  • 呼び出し履歴の巻
  • スキャンダル発覚の巻
  • 関数呼び出し元を判定するの巻
  • 関数ポインタは嘘の値?!
  • stubを乗り越えて

ケンイチの講義ノート

  • 二分法での絞り込み
  • 呼び出し元(の関数)の判定
  • ロギングにReflectionを用いる
  • まとめ
  • VisualStudioミニテクニック①(検索結果にジャンプ,括弧間の移動,コメント化とコメント解除)

第5回 関数のhooking

  • 予習はバッチリの巻
  • スタック構造の巻
  • 教科書は教えてくれないスタック構造のことの巻
  • 教科書に載っていないスタック構造のヒミツの巻
  • 早井先輩,お腹いっぱいですの巻
  • 誰がわんわんを殺したの? の巻

ケンイチの講義ノート

  • 関数の呼び出しをバイパスする意味
  • 関数のhook
  • C#やJavaではどうか
  • 対象性に着眼する
  • 今回,犯してしまったバグ
  • VisualStudioミニテクニック②(ブレークポイントの有効/無効,インテリセンスを半透明に)

第6回 SparseMatrixによるlogging

  • やばい!! 遅刻かも? の巻
  • ケンイチのヒミツのプログラムの巻
  • GoogleのPageRankのしくみの巻
  • PageRankを行列計算で考えるの巻
  • ケンイチの昼休みの巻
  • 噴火寸前の巻
  • 5分と5時間の巻
  • SparseMatrixの実装の巻

ケンイチの講義ノート

  • 今回のまとめ
  • SparceMatrixを使うロギングは本当に役に立つのか?

第7回 proxy objectによるバグの再現

  • プログラマのお給料って凄いの巻
  • バグを絞り込むの巻
  • プログラムを変形してバグの原因を絞り込むの巻
  • 削ろうにも削れないの巻
  • 早井先輩は健忘症の巻
  • ヘビー級オブジェクトの巻

ケンイチの講義ノート

  • 今回のまとめ

第8回 ケアレスミスはなぜ起きるのか?

  • 一緒にお風呂の巻
  • 迷路から脱出せよの巻
  • 再帰的プログラミングの巻
  • 早井先輩は,最近ヘンの巻
  • 対称性を意識しろ! の巻

ケンイチの講義ノート

  • 今回のまとめ
  • スキャンラインアルゴリズム
  • VisualStudioミニテクニック③(識別子の宣言を表,インテリセンスの入力候補一覧を表示)

第9回 プログラミングのイディオム(前編)

  • ケンイチはうそつきの巻
  • プログラミングのイディオム1 「n回まわるforループ」の巻
  • プログラミングのイディオム2 「ループ変数がaからbまでをとるforループ」の巻
  • プログラミングのイディオム3 「ループ変数がiteratorの場合のループ」の巻
  • プログラミングのイディオム4 「範囲の比較」の巻

ケンイチの講義ノート

  • 今回のまとめ
  • イディオムを用いたプログラミング
  • VisualStudioミニテクニック④(コード定義ウィンドウの表示)

第10回 プログラミングのイディオム(後編)

  • ひなた先生は泥棒の巻
  • 早井先輩は暴走気味の巻
  • ド・モルガンの法則の巻
  • ド・モルガン則を実際に使ってみるの巻
  • 双対性の巻
  • 分配則の巻
  • Simple is NOT bestの巻
  • ケニチ君の本当の名は? の巻
  • 本当の早井先輩の巻

ケンイチの講義ノート

  • 今回のまとめ
  • 方程式と恒等式について

第11回 例外処理の考え方

  • 誰にも知られずにの巻
  • ケンイチ君が遅刻の巻
  • 例外を使わずにプログラムを書けるのか? の巻
  • 例外を使う意義の巻
  • そのメソッドはどんな例外を投げるのか? の巻
  • Java VS. C#の例外処理の巻
  • .NET Frameworkの投げる例外の巻
  • 例外を投げるクラスをwrapするの巻
  • 例外を投げるメソッドに例外を投げさせないの巻

ケンイチの講義ノート

  • 今回のまとめ
  • VisualStudioミニテクニック⑤(呼び出し履歴のウィンドウで関数呼び出しにブレークポイントを設定する,クラスビューの表示)

第12回 変数の命名規則

  • 夜空の星にの巻
  • 2893年の巻
  • ケンイチ,早井。時を駆けるの巻
  • ケンイチの兄の巻
  • プログラミングに歴史ありの巻
  • ハンガリアン記法の巻
  • ラクダ記法の巻
  • 2001年のメンバの記法の巻
  • 現代の命名規則の巻
  • 2021年の変数の命名規則の巻

ケンイチの講義ノート

  • 今回のまとめ
  • VisualStudio 2005/2008 ExpressEditionの話

第13回 関数の返り値はどうあるべきか

  • みんながかぼちゃの巻
  • ひなた先生の課題の巻
  • 関数のしくみの巻
  • 関数の返り値不要論の巻
  • 返り値の変遷
  • インテリセンスと返り値の巻
  • 早井先輩の本名の巻

ケンイチの講義ノート

  • 今回のまとめ
  • method chainとcascading message
  • VisualStudioミニテクニック⑥(ブレークポイントに条件を設定する,インスタンス単位でブレークポイントを設定する)

第14回 ポインタと参照との関係

  • 海で溺れるの巻
  • 早井先輩,会社を辞めるの巻
  • 早井先輩にポインタを教えるの巻
  • ポインタの演算の巻
  • ポインタを抽象化の巻
  • upcastされたポインタに対する加減算の巻
  • ポインタ渡しの巻
  • 参照は構文糖か? の巻
  • bool*はC#でどう書くの? の巻
  • 参照型を値型として扱いたいの巻
  • getはreadと違うの巻
  • 早井先輩の正体の巻

ケンイチの講義ノート

  • 今回のまとめ
  • 参照透明性(referential transparency)

最終回 バグを憎んで人を憎まず

  • 早井先輩の正体の巻
  • 望まれていない生命の巻
  • 早井先輩の名前の由来の巻
  • もはやコーディングができないの巻
  • 早井先輩の書いたコードの巻
  • ソースコードから書き手の意志を読むの巻
  • 兄の悲しみの巻
  • 康二,旅への巻
  • エピローグ

初出情報

  • あとがき
  • 奥付け

著者プロフィール

やねうらお

1972年生まれ。幼少期にTK80に触れ,砂場で雷に打たれて覚醒する。1998年,BM98が大ヒット。その後,ゲーム会社を経て独立。