Files
Yukihiro "Matz" Matsumoto 66f438d8fe mruby-bin-debugger: return on OOM in mrb_debug_set_break_method
mrb_debug_set_break_method() freed set_class after mrdb_strdup() of
method_name failed but did not return. Execution continued into
alloc_breakpoint(), which on failure double-freed set_class, or on
success stored the dangling pointer in the breakpoint table for later
use-after-free. Return MRB_DEBUG_NOBUF immediately after the free.

mrdb_strdup uses mrb_malloc_simple which returns NULL on OOM (it does
not raise), so the NULL check is reachable in practice.

close #6851

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-22 07:08:26 +09:00
..
2025-07-01 20:57:52 +09:00

mruby-bin-debugger

mrdb is the mruby debugger for debugging Ruby scripts.

Usage

mrdb [switches] programfile

Options

  • -b - load and execute RiteBinary (mrb) file
  • -d - specify source directory
  • --version - print the version
  • --copyright - print the copyright

Debugger Commands

Command Abbreviation Description
break b Set a breakpoint
continue c Continue execution
delete d Delete breakpoints
disable dis Disable breakpoints
enable en Enable breakpoints
eval ev Evaluate expression
help h Show help
info breakpoints i b Show breakpoint information
info locals i l Show local variables
list l List source code
print p Print expression value
quit q Quit debugger
run r Run program
step s Step into
next n Step over

Examples

# Start debugging a script
mrdb script.rb

# Debug a compiled binary with source directory
mrdb -b -d /path/to/source script.mrb

Debugging Session Example

$ mrdb script.rb
(mrdb) b 10           # Set breakpoint at line 10
(mrdb) r              # Run the program
(mrdb) p variable     # Print variable value
(mrdb) n              # Step to next line
(mrdb) i l            # Show local variables
(mrdb) c              # Continue execution
(mrdb) q              # Quit

License

MIT License - see the mruby LICENSE file.