Ruby の debug-gem をつかってみた
RubyKaigi で発表があった debug-gem を使ってみたので覚書。
思ったよりもいろんな機能があった。
インストール
$ gem install debug
でインストールするか Gemfile
に以下を追加して debug-gem を導入します。
gem "debug", ">= 1.0.0"
最新版を使いたい場合はこう。
gem "debug", git: "git@github.com:ruby/debug.git", branch: "master"
簡単な使い方
いくつか使い方はあるが今回は binding.break
を使ってデバッグしてみる。
コード
- 処理を止めたい場所に
binding.break
を仕込んでおく- ここで処理が止まる
require 'debug' a = 1 b = 2 # binding.irb のように binding.break で処理が止まる binding.break c = 3 d = 4 binding.break p [a, b, c, d]
デバッグ実行
- 通常通り
ruby
コマンドでコードを実行すれば OK binding.break
したところで処理が止まる
$ bundle exec ruby sample.rb [1, 9] in sample.rb 1| require 'debug' 2| 3| a = 1 4| b = 2 = > 5| binding.break 6| c = 3 7| d = 4 8| binding.break 9| p [a, b, c, d] = >#0 <main> at sample.rb:5
- ここで
info locals
を入力して確定するとローカル変数一覧が表示されたりする
$ bundle exec ruby sample.rb [1, 9] in sample.rb 1| require 'debug' 2| 3| a = 1 4| b = 2 = > 5| binding.break 6| c = 3 7| d = 4 8| binding.break 9| p [a, b, c, d] = >#0 <main> at sample.rb:5 (rdbg) info locals # command %self = main a = 1 b = 2 c = nil d = nil (rdbg)
- 他にも
next
やstep
でステップ実行したりp {Ruby の式}
で式の実行結果を表示したりいろいろな機能がある - 詳しくは README を参照