デバッガ
プログラムの実行を途中で中断したり、1行ずつ進めたり、その時点の変数の値を表示したりして、バグの原因の発見を支援するツール。
イマシルちゃんの解説
プログラムが思いどおりに動かないとき、「どこで、何がおかしくなったのか」を調べるのは大変だよね。
デバッガを使うと、プログラムを好きな場所で一時停止して、
「今、この変数にはどんな値が入っているかな?」ってのぞき見できるんだ。
1行ずつ進めながら確かめられるから、バグの犯人がどこに隠れているのか、突き止めやすくなるんだよ!
より深い解説
定義
デバッガは、プログラムの不具合(バグ)を見つけて取り除く作業(デバッグ)を支援するためのツールである。ソースコードを表示しながら、実行中のプログラムの状態を観察・操作できる。
主な機能
| 機能 | 内容 |
|---|---|
| ブレークポイント | 指定した行に到達したら、プログラムの実行を一時停止する |
| ステップ実行 | 1行(1命令)ずつ実行を進める。関数の中に入る(ステップイン)、関数をまとめて実行する(ステップオーバー)などがある |
| 変数の表示(ウォッチ) | 停止した時点の変数の値を表示する。値を書き換えることもできる |
| コールスタックの表示 | どの関数からどの順で呼び出されたかを表示する |
| 条件付きブレークポイント | 変数が特定の値になったときだけ停止する |
デバッグの手法との関係
| 手法 | 内容 |
|---|---|
| デバッガを使う | 実行を止めて、状態を詳しく調べる |
| プリント文(ログ出力) | プログラムの途中に、変数の値などを出力する命令を入れる |
| スナップショットダンプ | 実行中の指定した時点の、メモリやレジスタの内容を出力する |
| トレース | 実行した命令の順序や、変数の値の変化を記録する |
開発を支援するツールの区別
| ツール | 機能 |
|---|---|
| デバッガ | 実行の中断や変数の表示などで、バグの発見を支援する |
| バグトラッキングシステム | 見つかったバグの内容や、修正の計画と履歴を管理する |
| テスト支援ツール | テストケースやテスト用のプログラムの作成を支援する |
| 静的解析ツール | プログラムを実行せずに、ソースコードを解析して誤りの可能性を指摘する |
デバッガはプログラムを動かしながらバグの原因を探す「動的」な道具、静的解析ツールはソースコードを読むだけで問題を見つける「静的」な道具である。