デバッガーどれ使う問題、これまでbyebugが最強だと考えてたけど、rdbgも結構イケそうだ。
- Ruby 3.0 and earlier
ruby -rdebug foo.rb
- Ruby 3.1+
rdbg foo.rb or byebug ruby foo.rb
debug(rdbg) バージョン履歴: 1.11.0 June 17, 2025 (98KB)
byebug 12.0.0 バージョン履歴: 12.0.0 March 25, 2025 (83KB)
rdbgはRelineライブラリ由来の問題発生時に回避できる。
RUBY_DEBUG_NO_RELINE=1 rdbg bin/simulate.rb setting/estrangement.rb 8604
note: Relineライブラリとは Relineは、GNU ReadlineやEditlineのAPIと互換性のある純Ruby実装のライブラリで、入力編集と履歴管理を担当しています。 Releases · ruby/reline
-
What problem does the Reline create?
rdbg bin/simulate.rb setting/estrangement.rb 8604 from /opt/homebrew/Cellar/ruby/3.4.2/lib/ruby/gems/3.4.0/gems/debug-1.10.0/lib/debug/session.rb:207:in 'block in DEBUGGER__::Session#activate' /opt/homebrew/Cellar/ruby/3.4.2/lib/ruby/3.4.0/reline/line_editor.rb:441:in 'Reline::LineEditor#wrapped_cursor_position': undefined method '+' for nil (NoMethodError) ...put_lines[0...@line_index].sum(&:size) + wrapped_line_before_cursor.size - 1
-
One of the workarounds suggested by Claude Desktop, but it didn’t have any effect.
# 異なるターミナルで試行 TERM=xterm rdbg your_script.rb # またはシンプルなターミナルモード TERM=dumb rdbg your_script.rb # Relineを無効にしてrdbgを実行 RELINE_STDERR_TTY=0 rdbg your_script.rb