を見ました。 良い機会なのでruby/debugを素振りしてみます。 次のRubyスクリプトを書きます。
require 'debug' def baz n n end def bar n baz n end def foo n bar n end binding.b result = foo(100) p result
実行してみましょう。
ledsun@MSI:~/ruby-debugger►ruby main.rb [10, 17] in main.rb 10| 11| def foo n 12| bar n 13| end 14| => 15| binding.b 16| result = foo(100) 17| p result =>#0 <main> at main.rb:15
binding.b
と書いたところで止まります。
実はカラフルに表示されています。
スクリーンショットを張ります。
s
を入力してEnterキーを押します。
binding.b
の次の行に移動しました。
s
はstep
コマンドです。
もう一度、s
を入力してEnterキーを押します。
foo
関数の中に入りました。
関数の中に入らずに次の行に進むにはnext
コマンドをつかいます。
いまはためしません。
stepコマンドをつかってどんどん関数の中に入っていきます。
なにやら下のほうにframeという情報が表示されています。
=>#0 Object#baz(n=100) at main.rb:4 #1 Object#bar(n=100) at main.rb:8 # and 2 frames (use `bt' command for all frames)
bt
と入力してEnterキーを押してみます。
baz, bar, fooと中に入った関数が順に表示されます。
up
, down
, frame
コマンドで表示されたframeを移動できるらしいです。
この辺からよくわからなくなりました。