Skip to content

duk_inspect_callstack_entry()

2.0.0 stack inspect

プロトタイプ

c
void duk_inspect_callstack_entry(duk_context *ctx, duk_int_t level);

スタック

| ... | -> | ... | info |

要約

コールスタック・エントリーをレベルで検査し、そのエントリーに関する Duktape 固有の内部情報を含むオブジェクトをプッシュします。level 引数は負でなければならず、バリュースタックのインデックス規則を模倣している: -1 は最も新しい(最も内側の)呼び出し、-2 はその呼び出し元、といった具合です。level 引数が無効な場合 (たとえば、現在のコールスタックの外側)、代わりに undefined がプッシュされます。

結果オブジェクトはバージョン保証の対象外なので、そのプロパティはマイナーリリースでも変更される可能性があります(パッチリリースではありません)。これは現実的な妥協点です。内部はかなり頻繁に変更されるので、バージョニングを保証しないか、内部を全く公開しないかのどちらかを選択することになります。そのため、呼び出し側のコードは、特定のフィールドのセットが利用可能であることに依存してはいけませんし、結果フィールドを解釈する際にDUK_VERSIONをチェックする必要があるかもしれません。 次の表は、現在のプロパティをまとめたものです。

プロパティ 説明 function 実行中の関数。信頼されないコードにさらされた場合、サンドボックス化の懸念があることに注意。 pc ECMAScript 関数用のプログラムカウンタ。ネイティブ関数を実行する場合は 0 です。 lineNumber ECMAScript 関数用の行番号。ネイティブ関数を実行している場合、または pc から行への変換データが利用できない場合は 0 となります。

c
duk_inspect_callstack_entry(ctx, -1);
duk_get_prop_string(ctx, -1, "lineNumber");
printf("immediate caller is executing on line %ld\n", (long) duk_to_int(ctx, -1));
duk_pop_2(ctx);