解説
「スタックトレース」(stack trace)は、プログラムの関数などの呼び出し履歴をたどり、表示する機能を指します。
スタックトレースは、「スタックバックトレース」(stack backtrace)などともいいます。
多くの場合、ファイル名、行番号、文字の位置、関数名などの情報が、呼び出された分だけ複数行にわたって表示されます。
プログラムでエラーが起きて停止した場合は、エラーメッセージとともにスタックトレースが表示されます。それらを見ることで、どのようなエラーが起き、どのように関数が呼び出されたのかが分かります。これらの情報は、エラーの原因を究明するために重要な情報となります。
また、プログラミング言語の多くには、プログラムの途中でスタックトレースを表示する関数が用意されています。これらの関数を利用することで、効率的にデバッグをおこなえます。
サンプル
「スタックトレース」のサンプルです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>スタックトレース</title>
<style> #output { font-size: 24px; line-height: 1.5; } </style>
</head>
<body>
<pre id="output"></pre>
<script>
window.addEventListener('DOMContentLoaded', e => {
// 出力用の関数
const print = function() {
const el = document.querySelector('#output');
el.textContent += [...arguments].map(x => JSON.stringify(x).replace(/\\n/g, '\n')).join(', ') + '\n';
};
// 関数を実行
try {
myFunc1();
} catch(e) {
print(e.stack);
}
});
function myFunc1() {
myFunc2();
}
function myFunc2() {
throw new Error("myError");
}
</script>
</body>
</html>
"Error: myError
at myFunc2 (http://127.0.0.1/sample.html:31:11)
at myFunc1 (http://127.0.0.1/sample.html:27:5)
at http://127.0.0.1/sample.html:20:9"
上記の「出力結果」にあるhttp://127.0.0.1/は、自分のPC(localhost)を指しています。この部分は実行された環境のホスト名に変わるため、実際のサーバー上ではそのアドレスが表示されます。
フィードバックお待ちしております!
ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookやX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。
