1

コンテキスト:私はプログラミング言語 (Lima と呼ばれる) を構築しています。適切なスタック トレースを生成できるように、システムがスタックを追跡するためのオプションを知りたいです (オリジナルの正しい行番号を使用)。ソース)。これは、この関連する限定的な質問の複製を意図したものではないことに注意してください:スタック トレースはどのように生成されますか?

私の基本的な質問は次のとおりです。プログラムは、実行されるすべての行の間にある行番号を更新する必要がありますか?

ここでの残念な答えはイエスのようです。

また、スタック トレース用にコンパイルしている環境で何かを活用できるかどうかも疑問に思っています。現在、私は言語をjavascriptにコンパイルしています(そしてRhinoで実行しています)-しかし、基礎となる環境がここで何らかの形であなたを助けることが理論的に可能かどうかについての一般的な答えを探しています.

基盤となるシステムがスタック トレースをサポートしている場合、そのシステムの行番号から自分の行番号への静的マッピングを作成できますか?

4

1 に答える 1

0

私の理解では、各サブルーチン呼び出しが行われるたびに、スタックには戻りアドレスが格納されています。そのアドレスは、スタック トレースの生成時にシンボル ルックアップで使用されます。スクリプト言語の場合、サブルーチン呼び出しを行うときにファイルと行番号/行位置を取得してスタックに置く必要があると思います。スクリプト言語はハッシュ テーブルを作成してこの情報を検索し、実際のスタックをよりコンパクトに保つ​​と推測しています。

于 2012-12-11T00:48:49.443 に答える