読者です 読者をやめる 読者になる 読者になる

気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Railsソースをデバッグするbeybugの基本コマンド

セットアップ

$ gem install byebug

ブレークポイントの設定

止めたい箇所に「byebug」を記載

RSpec.describe MonthlyReport, type: :model do
  describe 'Validations' do
    subject { build(:monthly_report) }

    byebug

    it { is_expected.to be_valid }
    it { is_expected.to validate_presence_of(:user_id) }
    it { is_expected.to validate_presence_of(:month) }
・
・
end

以下のようにbuybugコンソールが立ち上がり、停止する。

[20, 29] in /Users/hoge/work/ruby_study/rails_projects/sample/spec/models/sample_spec.rb
   20:   describe 'Validations' do
   21:     subject { build(:monthly_report) }
   22: 
   23:     byebug
   24: 
=> 25:     it { is_expected.to be_valid }
   26:     it { is_expected.to validate_presence_of(:user_id) }
   27:     it { is_expected.to validate_presence_of(:month) }

ソース表示コマンド

前の10行を表示

(byebug) l-

現在の位置を再び表示

(byebug) list=

変数の検査

変数と値のリストを表示するのに便利なvarメソッド

  • var(v) local(l) ローカル変数表示
  • var(v) instance(i) インスタンス変数表示
  • var(v) const(c) 定数表示
(byebug) var local
self = RSpec::ExampleGroups::MonthlyReport::Validations

(byebug) var instance
@children = []
@examples = [#<RSpec::Core::Example: ...
@hooks = #<RSpec::Core::Hooks::HookCollections:...
@metadata = {:execution_result=>#<RSpec::Core::Example::ExecutionResult:...

(byebug) var const
Concerning = Module::Concerning
DelegationError = Module::DelegationError
RUBY_RESERVED_WORDS = #<Set:...
VERSION = 1.1.0

変数をウォッチ

displayにウォッチしたい変数を設定する。

(byebug) display @articles
1: @articles = nil

スタック内で移動するたびに、そのときの変数と値のリストが出力されます。変数の表示を止めるには、undisplayn (n は変数番号) を実行します。
上の例では変数番号は 1 になっている。

(byebug) undisplay1

ステップ実行

step nやnext nと入力することで、nステップずつ進めることも可能

ブレークポイント

設定方法

  • break line: 現在のソースファイルの line で示した行にブレークポイントを設定
  • break file:line [if expression]: fileのline行目にブレークポイントを設定。 expression が与えられた場合、デバッガを起動するにはこの式が true と評価される必要があります。

ブレークポイントリストの参照方法

(byebug) info breakpoints

削除方法

(byebug) delete 1
(byebug) info breakpoints
No breakpoints.

番号を指定しない場合、現在有効なブレークポイントをすべて削除します。

参考URL

Rails アプリケーションのデバッグ | Rails ガイド