Help us understand the problem. What is going on with this article?

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-byebugで使えるコマンド
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
AknYk416
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away