デバッガ
ソースコード中の任意のステップに置くことで、実行の流れを一時的に止める機能。ブレークポイントを置いてからデバッグ対象のソフトウェアを実行した際、デバッガはブレーク位置でプログラムの処理を一時停止させる。これにより、任意の位置での実行状況(変数の値やメモリの内容)を調べることができるようになる。一時停止後に通常通り実行を再開することもできる。
複雑なデータ構造や膨大なデータ列など、単純にテキストで表現することが難しいケースもある。
そこで、プログラミングツールのひとつであるデバッガを利用して、テスト実行やデバッグの効率化および負担軽減を行なうようになった。デバッガを用いることで、前述の思考実験やprintfデバッグでは難しかった、高度な実行時検証をすることができるようになる。
デバッガの原理は、デバッグ対象のプロセスにアタッチして、プロセスの実行状況に関する情報の双方向通信を行なうことである。オペレーティングシステムにはデバッガの実装に利用可能なAPIが用意されていることもある。コンパイルすると、(人間には理解しにくい)機械語や中間表現になるプログラミング言語であっても、デバッグ用にコンパイル&ビルドする際に、ソースコードに関するメタデータである「プログラムデータベース」(program database; pdb) と呼ばれる追加情報を生成し、デバッグ実行時にこのシンボル情報を参照することで、デバッガは現在実行中のプログラムステップ位置などを特定することができる。
デバッガは性能解析および性能強化にも使われることがあるが、これらは本来プロファイラと呼ばれる別のツールの役割である。デバッグ用にコンパイル&ビルドされたプログラムは、余分なコードや最適化されていないコードを含んでおり、プログラム本来の性能指標としては使うべきではない。また、プログラムにデバッガをアタッチすることでオーバーヘッドを生じることもある。