Main Content

dbstack

関数呼び出しスタック

説明

dbstack は、現在の一時停止条件の原因となった関数呼び出しの行番号とファイル名を実行順に表示します。表示は現在実行中の関数から始まり、最上位の関数に到達するまで続行されます。それぞれの行番号は、エディター内で該当する行へのハイパーリンクです。functionname>localfunctionname という表記はローカル関数の位置を記述します。

dbstack(n) は、最初の n 個のスタック フレームを表示から除外します。この構文は、たとえばエラー ハンドラー内から関数 dbstack を発行するときに便利です。

dbstack(___, '-completenames') は、スタック内の各関数の完全修飾名を出力します。

'-completenames' は、前述の構文にある任意の入力引数と共に指定できます。

ST = dbstack(___) は、スタック トレース情報を m1 列の構造体 ST として返します。

[ST,I] = dbstack(___) は、現在のワークスペース インデックス I も返します。

すべて折りたたむ

MATLAB® コード ファイルのデバッグ中に、dbstack コマンドを実行してスタック トレース情報を表示します。

次のステートメントを含むファイル myfile.m を作成します。

function n = myfile(x)
n = myfunction(x-1);
end

function z = myfunction(y)
z = 2 / y;
end

myfunction にブレークポイントを設定し、1 を入力して myfile を実行します。myfunction の実行中に、MATLAB は z = 2/y の行で一時停止します。

dbstop in myfile>myfunction
myfile(1);

dbstack コマンドを実行します。MATLAB は、現在のブレークポイントに至るまでの関数呼び出しの行番号とファイル名を表示します。

dbstack
In myfile>myfunction (line 5)
In myfile (line 2)

ファイルのデバッグ中に、各関数の完全なファイル名、完全な関数名および行番号をスタックに格納します。

次のステートメントを含むファイル myfile.m を作成します。

function n = myfile(x)
n = myfunction(x-1);
end

function z = myfunction(y)
z = 2 / y;
end

myfunction にブレークポイントを設定し、1 を入力して myfile を実行します。myfunction の実行中に、MATLAB は z = 2/y の行で一時停止します。

dbstop in myfile>myfunction
myfile(1);

最初のフレームを除外し、完全名を要求する dbstack コマンドを実行します。MATLAB は、指定された構造体 ST にスタック トレース情報を返します。

[ST, I] = dbstack('-completenames', 1)
ST = 

    file: 'C:\myProject\myfile.m'
    name: 'myfile'
    line: 2


I =

     1

入力引数

すべて折りたたむ

除外するフレーム数。非負の整数として指定します。

出力引数

すべて折りたたむ

スタック トレース情報。m1 列の構造体として返されます。ここで、m は呼び出しスタック内の関数の数です。これらの構造体には次のフィールドがあります。

file関数が出現するファイル。ファイルがない場合、このフィールドは空です。
nameファイル内の関数名。
line関数呼び出しの行番号。

メモ

ファイルの最後を通過すると、dbstack は、負の行番号値を返して、この特殊な状況を識別します。たとえば、実行される最後の行が 15 の場合、dbstack の行番号は、その行の実行前には 15、実行後には -15 になります。

現在のワークスペース インデックス。正の整数として返されます。このインデックスは、現在のワークスペースと、MATLAB が現在一時停止中または実行中のワークスペースとの間にあるワークスペースの数を表します。

拡張機能

バージョン履歴

R2006a より前に導入