Skip to content
EntityQ1554400· pop 11· linked from 33 articles

バックトレース

Sign in to save

Also known as stack backtrace, stack traceback, traceback, backtrace

report of the active stack frames at a certain point in time during the execution of a program

Wikidata facts

Show 1 more fact

via Wikidata · CC0

Article · 日本語

コンピュータにおいて、スタックトレース(英語: stack trace)とは、プログラムの実行中の特定の時点でのアクティブなスタックフレームのレポートである。スタックバックトレース(英語: stack backtrace)、スタックトレースバック(英語: stack traceback)とも言い、単にバックトレースとも言う(gdbでのレポートコマンドは、バックトレース(backtrace)を縮めたbtである)。 プログラムが実行されると、多くの場合、スタックとヒープの2つの場所にメモリが動的に割り当てられる。スタックという言葉はプログラムの構文についても使われるため、区別するために、このスタックはコールスタック(call stack)と呼ばれる。技術的には、メモリブロックがスタックに割り当てられると、その前に他のメモリブロックが割り当てられている可能性があるため、簡単に削除することはできない。プログラムで関数が呼び出されるたびに、スタックフレーム(またはアクティベーションレコード)と呼ばれるコールスタックの最上部にメモリブロックが割り当てられる。高レベルでは、スタックフレームは、関数内で宣言された関数のパラメータとローカル変数にメモリを割り当てる。 プログラマは通常、デバッグにおいてスタックトレースを使用する。エンドユーザには、エラーメッセージの一部としてスタックトレースが表示されることがあり、障害報告の際に使用する。 スタックトレースを使用すると、スタックトレースが生成されるまでの、呼び出されたのシーケンスを追跡できる。事後分析では、障害が発生した関数まで追跡できる(ただし必ずしも追跡できるわけではない)。末尾再帰はスタックトレースに表示されない。 次の、エラーが含まれたPythonプログラムで説明する。 def a: i = 0 j = b(i) return jdef b(z): k = 5 if z == 0: c return k/zdef c: error #存在しない関数を呼び出そうとしているa このプログラムを標準のPythonインタプリタで実行すると、次のエラーメッセージが生成される。 Traceback (most recent call last): File "tb.py", line 15, in a File "tb.py", line 3, in a j = b(i) File "tb.py", line 9, in b c File "tb.py", line 13, in c errorNameError: name 'error' is not defined スタックトレースは、エラーが発生した場所、つまり関数cを示している。また、関数cは関数bから、関数bは関数aから、関数aはプログラムの15行目(最終行)から呼び出されたことも示している。 これらの3つの関数のそれぞれのアクティベーションレコードは、関数aがスタックの下部を占有し、関数cがスタックの上部を占有するようにスタックに配置される。

Abstract from DBpedia / Wikipedia · CC BY-SA

Connections

Categories