スタックトレース【stack backtrace】stack traceback
概要

プログラムは関数やメソッドを相互に呼び出しながら動作する。この呼び出し関係はメモリ上の「コールスタック」と呼ばれる領域で管理されており、ある関数が別の関数を呼び出すたびに、呼び出し元の情報がスタックの末尾に積み重なっていく。呼び出された関数の処理が終わると、その情報はスタックから取り除かれ、制御が呼び出し元に戻る。
エラーが発生してプログラムが停止すると、その瞬間のコールスタックの内容がスタックトレースとして出力される。一般的な表示形式として、エラーが発生した関数を先頭に、その呼び出し元、さらにその呼び出し元へと、実行経路を逆順にたどる形で一覧表示される。
各行には関数名、ソースファイル名、行番号などが示されるため、問題がコードのどこで、どのような呼び出し経路を経て発生したかを把握できる。PythonやJavaなど多くの言語処理系はエラー発生時にスタックトレースを自動で出力し、デバッガやAPM(アプリケーション性能管理)ツールでも取得・閲覧できる。CやC++などのネイティブ環境では、デバッグシンボルの有無によって情報量が変わるほか、コンパイラの最適化によって一部のフレームが省略される場合もある。
JavaScriptではソースマップによりバンドル・圧縮後のコードと元のソースコードを対応付けることで、可読性の高いスタックトレースを得られる仕組みも整っている。近年では非同期処理を多用するシステムや、複数のサービスが連携するマイクロサービスアーキテクチャが普及し、単一プログラム内のスタックトレースだけでは障害の全容を追いきれない場面も増えている。これに対応する形で、複数のサービスや処理をまたいで実行経路を追跡する「分散トレーシング」の技術も広まりつつある。
(2026.6.19更新)