ruby/debug
Ruby 3.1からデフォルトでインストールされるdebugger
コミュニティ発のbyebug, pry等と異なりRuby core teamによってメンテナンスされている
VS Code integrationがある
https://dev.to/st0012/setup-rubydebug-with-vscode-1b7c
機能
step debugging
cheatsheetを見るとわかるように他のRuby debuggerとコマンドに大差ない
https://st0012.dev/ruby-debug-cheatsheet
frame navigation
Rubyのコード実行ではメソッド呼び出しがフレームとしてスタックされていく
フレームを確認・移動できる
bt backtrace表示
up 上のフレームに移動(呼び出し元に戻る)
down 下のフレームに移動(呼び出し先へ進む)
breakpoint
break (b) コマンドで任意のタイミングにbreakpointを設定できる
特定の行に到達したとき
b <line>
b <file>:<line>
特定のメソッドが呼ばれたとき
b <class or obj>(.|#)<method>
例外発生したとき
catch <exception class>
scriptable breakpoints
binding.bなどでdebugを開始してからの手順はknow actions, unknown actionsに分かれる
known actions = infoでローカル変数を見たり、breakpointを設定したり。これらをまとめて実行できる
pre: "cmd"
binding.b(pre: "info ;; foo.bar? ;; break foo.baz")
cmdを実行したあとにbreakpointで止まる
do: "cmd"
cmdを実行したあとにcontinueする
利点
human errorが減る、cmdをエディタで書くので支援が受けられる
デバグ手順・体験を自分以外にシェアできる
参考
Ruby: byebugからruby/debugへの移行ガイド(翻訳)
https://www.youtube.com/watch?v=gseo4vdmSjE