- ソースコードを入手して, ビルド, 実行できるようになったらコードを修正する準備が整ったことになる
- どんな修正をするにせよ, 何か目標が決まったら, ソースコード内でそれに関連するコードがどこに書かれているかを突き止めるのが最初の仕事になる
- そのための方法はいくつかある
- 汎用的な文字列検索 (grepなど) ...
- 指定した文字列や正規表現が含まれえいるファイルやその行を教えてくれる
- ディレクトリを指定してその下の全てのファイルを対象にすることもできる
- どんなファイルも検索対象にできる汎用性があるが, ファイルの中身をプログラムとして解釈してくれるわけではないので, 「この変数が定義されている場所」とか「この関数が呼び出されている場所」のような検索はできない
- クロスリファレンスツール (globalなど)
- プログラムの中身をある程度解釈して, 「この変数が定義されている場所」とか「この関数が呼び出されている場所」のような検索ができる
- ただし実際にプログラムをビルドしているわけではないので不正確なことも多い (例えば同じ名前の関数が複数あり, 環境ごとに異なるものが使われるような状況で, 実際には使われていない関数が見つかってしまうなど)
- どちらも, プログラムのどこが実際に実行されているかなどを教えてくれるものではない
- 実際に何が実行されているかを突き止めるためにはデバッガによる追跡が強力であり, ぜひそれをマスターしてほしい
- しかし静的な検索ツールも手軽さや, 大規模なコードに対しても簡単に適用できるという利点もあり, 両方をうまく使い分けることが必要
- 例え話としては, 静的な検索ツールは「森全体」を把握するツール, デバッガは木を一本ずつ観察するツール