byebugをつかうと、
ruby2.0系スクリプトを一行毎に実行したり
値を確認したり内部でirbを実行できたり(!)します
bash@ruby-code$ byebug byebugtest.rb [1, 10] in /Users/shironoryouta/src/ruby-code/byebugtest.rb => 1: def sample_func( a, b ) 2: a + b 3: end 4: 5: puts 'hello' 6: 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: (byebug)
ここで入力が可能となるので、
まずは一行実行する"step"を放り込みます。
(byebug) step [1, 10] in /Users/shuzo/src/ruby-code/byebugtest.rb 1: def sample_func( a, b ) 2: a + b 3: end 4: => 5: puts 'hello' 6: 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: (byebug)
やったぜ。
更にstepを続けていきます。
putsで表示された文字列が出てるのが確認いただるかと
(byebug) step hello [2, 11] in /Users/shuzo/src/ruby-code/byebugtest.rb 2: a + b 3: end 4: 5: puts 'hello' 6: => 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: 11: sum -= 1 (byebug)
displayは変数の値を確認するコマンドです。
(byebug) display sum 1: sum = nil (byebug) step 1: sum = 0 [4, 13] in /Users/shuzo/src/ruby-code/byebugtest.rb 4: 5: puts 'hello' 6: 7: sum = 0 8: => 9: sum = sample_func(1, 8) 10: 11: sum -= 1 12: 13: puts 'bye' (byebug) display sum 2: sum = 0 [1, 10] in /Users/shuzo/src/ruby-code/byebugtest.rb 1: def sample_func( a, b ) => 2: a + b 3: end 4: 5: puts 'hello' 6: 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: (byebug) step 1: sum = 9 2: sum = 9 [4, 13] in /Users/shironoryouta/src/ruby-code/byebugtest.rb 4: 5: puts 'hello' 6: 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: => 11: sum -= 1 12: 13: puts 'bye' (byebug) display sum 3: sum = 9
やめるにはexit
(byebug) exit Really quit? (y/n) y
なんと、内部でirbやpryを呼び出す事も可能です。
こりゃもうわかんねぇな
(byebug) irb irb(main):001:0>