Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

byebugをつかってRuby2.0系のスクリプトをデバッグする

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>