Ruby
debug
デバッグ
pry-byebug

pry-byebugでrubyをデバッグする

More than 1 year has passed since last update.

pry-byebugとは

pryでデバッグするためのプラグイン
pry-debuggerの後継らしい
GitHub https://github.com/deivid-rodriguez/pry-byebug

pryとは

irbのように対話的にrubyを実行するためのツール
irbに比べてドキュメントが見れたりシンタックスハイライトが効いたりする

pry-byebugをインストールする

gem install pry-byebug

pry-byebugを使う

デバッグしたいコードにrequire 'pry'を追加する
あとは、ブレークポイントをうちたい場所にbinding.pryを書いて実行すればその箇所で処理が止まってくれてpryが起動します

sample.rb
#!/usr/bin/env ruby

require "thor"
require "pry"

x = 10
y = 20
z = 30

binding.pry # ここ
area = (x*y + y*z + z*x) * 2
volume = x * y * z
print "area: ", area, "\n"
print "volume: ", volume, "\n"

これを実行すればブレイクポイントを打ったとこで処理が止まる

     6: x = 10
     7: y = 20
     8: z = 30
     9:
    10: binding.pry
=>  11: area = (xy + yz + zx)  2
    12: volume = x * y * z
    13: print "area: ", area, "\n"
    14: print "volume: ", volume, "\n"
変数の値を確認する

変数名を打てば変数には入っている値を確認できます

[1] pry(main)> area
=> 2200
pry-byedebugで使えるコマンド
next
次の行を実行
step
次の行かメソッド内に入る
continue
プログラムの実行をcontinueしてpryを終了
finish
現在のフレームが終わるまで実行

毎回nextなどを打つのが面倒くさいときは

~/.pryrcを作成しておくと楽です

.pryrc
if defined?(PryByebug)
  Pry.commands.alias_command 's', 'step'
  Pry.commands.alias_command 'n', 'next'
  Pry.commands.alias_command 'f', 'finish'
  Pry.commands.alias_command 'c', 'continue'
end