2017-12-20 5 views
1

例えば次のような方法を取り、その後、方法の呼び出し:私は私の端末でこのスクリプトを実行するために行くときという、とにかくがある場合、それは数に到達したときに、私は(、思っていたRubyメソッドをデバッグしてローカル変数の値が変わるのを確認するにはどうしたらいいですか?

def count(n) 
    x=3 
    y=5 

    n+=x 
    n-=y 

    puts n 
end 

count(3) 

3)メソッドが実際に呼び出される行は、単純に "n"を出力するのではなく、どうにか私はローカル変数(n、x、y)を見ることができるウィンドウで行ごとに行えます。その最終値が端末に出力される前に、メソッドが実行されると "n"の値が変化するのがわかります。

答えて

1

byebug gemでこれを達成できます。

あなたは単にbyebug行を挿入することで、どこでも、あなたのコードにブレークポイントを追加するか、またはあなたがそうのようなスクリプトを呼び出して、デバッグモードで全体のスクリプトを実行することができます

byebug something-awesome.rb 

デバッグモードに入ると、 stepコマンドを使用してコードを1行ずつ進めることができます。

[1, 10] in /Desktop/something-awesome.rb 
=> 1: def count(n) 
    2: x = 3 
    3: y = 5 
    4: 
    5: n += x 
    6: n -= y 
    7: 
    8: puts n 
    9: end 
    10: 
(byebug) step 

[2, 11] in /Desktop/something-awesome.rb 
    2: x = 3 
    3: y = 5 
    4: 
    5: n += x 
    6: n -= y 
    7: 
    8: puts n 
    9: end 
    10: 
=> 11: count(3) 
(byebug) step 

[1, 10] in /Desktop/something-awesome.rb 
    1: def count(n) 
=> 2: x = 3 
    3: y = 5 
    4: 
    5: n += x 
    6: n -= y 
    7: 
    8: puts n 
    9: end 
    10: 
(byebug) step 

[1, 10] in /Desktop/something-awesome.rb 
    1: def count(n) 
    2: x = 3 
=> 3: y = 5 
    4: 
    5: n += x 
    6: n -= y 
    7: 
    8: puts n 
    9: end 
    10: 
(byebug) x 
3 

私は過去2行目(コンソール出力の下部にある)を強化した後、私は今、何を参照するxを入力できることに注意してください:ここでは

は、このプロセスがどのように見えるかの例ですxの値はコードのこの時点です。

利用可能なすべてのコマンドのリストについては、Byebugドキュメントのcommands sectionを参照してください。

+0

OPから与えられた例のためにどのように宝石を使用しますか? –

+0

@SagarPandyaが私の答えを更新しました。 – jeffdill2

+0

これは、読者に宝石が何をすることができるかを示す優れた更新です。ニース(冬のバッシュ)ヘアスタイルも、あなたに合っています:) –

0

私は絶対にpryの宝石が大好きです。

それは、インスタンスとクラスを介して、ディレクトリを変更することができます素晴らしいと強力なインタフェース(すなわちcd User.first)ですリスト方式(ls)とさえシェル(shell-mode; .pwd)との対話 - あなたが好きな場所から、単純なbinding.pryをドロップすることで、すべての

また、Ruby 2.5にはbinding.irbが付属しています。私はまだそれを見ていませんが、それはネイティブの同等物になり、うまくいけば第三者の宝石の必要性がなくなります。

関連する問題