- pry デバッグの起動
byebug
vsbinding.pry
vsbinding.irb
byebug
pry
-
binding.irb
- ステップ
- コールスタック・ナビゲーション
- ショートコマンド
- 最後のコマンドを繰り返します。
プライデバッグ
pry デバッグの起動
デバッガを起動するには、binding.pry
をコード内部のどこかに記述します。Rubyインタプリタがそのコードにぶつかると実行が停止し、コマンドを入力してプログラムの状態をデバッグすることができます。
PumaやSidekiqのような別のプロセスでコードをデバッグする場合は、binding.pry_shell
。その後、pry-shell実行ファイルを使用して、このセッションに接続できます。pry-shell
の使用方法については、こちらのビデオをご覧ください。
binding.pry
を使用すると、オートロードのイシューが発生し、名前解決に失敗することがあります。必要であれば、より限定された機能セットでbinding.irb
を代わりに使うことができます。
byebug
vsbinding.pry
vsbinding.irb
byebug
はgdb
と非常によく似たインターフェイスを持っていますが、byebug
は強力な Pry REPL を使っていません。
binding.pry
は Pry を使いますが、byebug
の機能の一部が欠けています。GitLabはpry-byebug
gemを使います。このgemはbyebug
の機能の一部をbinding.pry
に持ってきているので、これを使うことで最もデバッグ能力が高まります。
byebug
コマンドの全リストはドキュメントをご覧ください。
Pry REPL はpry
コマンドで起動できます。
pry
pry
には多くの機能があり、このドキュメントではカバーしきれません。
また、help
を pry セッションで実行すると、他に何ができるかを確認できます。
binding.irb
Ruby 2.7の時点で、IRBにはシンプルな対話型デバッガが同梱されています。
詳しくはドキュメントをご覧ください。
州ナビゲーション
ステート・ナビゲーションを使用すると、コード内を移動してメソッドなどを発見することができます:
# Change context
[1] pry(main)> cd Pry
[2] pry(Pry):1>
# Print methods
[2] pry(Pry):1> ls -m
# Find a method
[3] pry(Pry):1> find-method to_yaml
ソース閲覧
pry
セッションからソースコードを参照します:
[1] pry(main)> $ Array#first
# The above is equivalent to
[2] pry(main)> cd Array
[3] pry(Array):1> show-source first
$
はshow-source
のエイリアスです。
ドキュメント閲覧
ソース・ブラウジングと似ているものに、ドキュメンテーション・ブラウジングがあります。
[1] pry(main)> show-doc Array#first
?
はshow-doc
のエイリアスです。
コマンド履歴
Control +R でコマンド履歴を検索できます。
ステップ
コードをステップスルーするには、以下のコマンドを使用します:
-
break
:ブレークポイントの管理 -
step
:次の行やメソッドにステップ実行します。複数回ステップ実行するには、オプションの数値引数を取ります。 -
next
:同じフレーム内の次の行にステップオーバーします。また、複数回ステップするためにオプションの数値引数を取ります。 -
finish
:現在のスタックフレームが戻るまで実行します。 -
continue
:プログラムの実行を継続し、Pry セッションを終了します。
コールスタック・ナビゲーション
コールスタック内を移動するには、以下のコマンドを使用します:
-
backtrace
:現在のスタックを表示します。左側の数字とframeコマンドを使ってスタックを移動できます。 -
up
:スタックのフレームを上に移動します。複数のフレームを移動するには、オプションの数値引数を取ります。 -
down
:スタックフレームを下に移動します。複数のフレームを移動するには、オプションの数値引数を取ります。 -
frame <n>
:特定のフレームに移動します。引数なしで呼び出すと、現在のフレームを表示します。
ショートコマンド
byebug
の代わりにbinding.pry
を使用すると、s
、n
、f
、c
などのショートコマンドが機能しません。これらを再インストールするには、~/.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
最後のコマンドを繰り返します。
次のスニペットを~/.pryrc
に記述しておけば、Enter キーを押すだけで(例えばstep
やnext
で)最後のコマンドを繰り返すことができます:
Pry::Commands.command /^$/, "repeat last command" do
_pry_.run_command Pry.history.to_a.last
end
byebug
はすぐにこれをサポートします。