これは Ruby 固有の専門用語ではありません。ほとんどすべてのデバッグに共通です。
スタックフレームについて
おそらくスタック トレースを見たことがあるでしょう。
/usr/local/rvm/gems/ree-1.8.7-2010.02/gems/redgreen-1.2.2/lib/redgreen.rb:28:in `write': Broken pipe (Errno::EPIPE)
from /usr/local/rvm/gems/ree-1.8.7-2010.02/gems/redgreen-1.2.2/lib/redgreen.rb:28:in `output_single'
from /usr/local/rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:72:in `add_fault'
from /usr/local/rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:70:in `to_proc'
from /usr/local/rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/test/unit/util/observable.rb:78:in `call'
完全なトレースは、「コール スタック」を示しています。一番上の行は例外がスローされた場所であり、その下の行は、プログラムがそのポイントに到達するためにたどったコードのパスを示しています。これらの各行は、「スタック フレーム」と呼ばれるスタック内のレベルです。したがって、例外がスローされると、現在のスタック フレームがスタックの一番上になります。に移動する場合frame -1
次に、コール スタックの一番下に移動します。コール スタックは、プレートのスタックのようなものと考えてください。関数を呼び出すとスタックにプレートが追加され、その関数から戻るとスタックからプレートが削除されます。各プレートはフレームです。通常、関数内の関数内で関数を呼び出すことになるため、呼び出しスタックがかなり深くなり、呼び出しスタックの各ポイントでローカル変数と状態を評価するために、それらを上下に移動することがデバッグに役立ちます。
コール スタックについて詳しく知りたい場合は、ウィキペディアにすばらしい記事があります。
スレッドについて
最新のプログラミング言語のほとんどはマルチスレッドです。つまり、複数のコード パスを (ほぼ) 同時に実行できます。たとえば、ビジュアル アプリがあり、高価な計算を実行するとします。計算の実行中、GUI はユーザー入力に反応できず、ユーザーにはアプリケーションがフリーズしているように見えます。これを解決するには、2 つのスレッドを実行します。一方のスレッドはユーザー入力の受け入れと処理、および GUI の描画を担当し、もう一方のスレッドは負荷の高い計算を担当します。計算スレッドが負荷の高いループに陥り、GUI スレッドが実行され続けて GUI が描画され続ける可能性があります。
マルチスレッド アプリケーションを実行している場合、デバッグ コマンド (式) を評価するスレッドを選択する必要があります。これは、各スレッドがコードの異なるポイントにあり、異なるコール スタックと異なるコール スタックを持つためです。ローカル変数と状態など。これが評価コンテキストです。
ただし、これは Rails に関する質問であり、Rails は (デフォルトで) シングルスレッドであるため、スレッドについて心配する必要はありません。