mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
66f438d8fe
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>
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.