スタックトレース
プログラムが実行されると、多くの場合、スタックとヒープの2つの場所にメモリが動的に割り当てられる。スタックという用語はプログラム要素としての一般的なデータ構造のひとつについても使われるため、区別するために、このスタックはコールスタック (call stack) と呼ばれる。ヒープはプロセス内の全スレッドで共有されるが、コールスタックはスレッドごとに割り当てられる。技術的には、メモリブロックがいったんスタックに割り当てられると、その前に割り当てられていた他のメモリブロックが存在している可能性があるため、簡単に削除することはできない。プログラムで関数(サブルーチン)が呼び出されるたびに、コールスタックの最上部にスタックフレーム(またはアクティベーションレコード)と呼ばれるメモリブロックが割り当てられる。スタックフレームは一般的に、関数宣言の仮引数に対応する値として関数に渡された実引数、関数内で定義されたローカル変数、関数終了時に復帰する位置を記憶するためのリターンアドレスなどを保持する。
プログラマは通常、デバッグにおいてスタックトレースを使用する。