Tana Gone
Tana Gone
~1 min read

Categories

デバッガーどれ使う問題、これまで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