overall debugger command syntax Command tokenization syntax is very simple-minded. If a line starts with #, the command is ignored. If a line starts with !, the line is eval'd. If the command you want eval'd uses the Ruby ! initially, add that after the first ! or start the line with a space. Commands are split at whereever ;; appears. This process disregards any quotes or other symbols that have meaning in Ruby. The strings after the leading command string are put back on a command queue. Within a single command, tokens are then white-space split. Again, this process disregards quotes or symbols that have meaning in Ruby. Some commands like 'eval', 'macro', and 'break' have access to the untokenized string entered and make use of that rather than the tokenized list. The leading token is first looked up in the macro table. If it is in the table, the expansion is replaces the current command and possibly other commands pushed onto a command queue. Next, the leading token is looked up in the debugger alias table and the name may be substituted there. Finally, the leading token is looked up in the debugger alias table. If a match is found, the command name and arguments are dispatched to the command object that process the command. If the command is not found and "auto eval" is set on, then the command is eval'd in the context that the program is currently stopped at. If "auto eval" is not set on, then we display an error message that the entered string is "undefined". If you want irb-like command-processing, it's possible to go into an irb shell with the "irb" command. It is also possible to arrange going into an irb shell every time you enter the debugger. Examples: # This line does nothing. It is a comment s # by default, this is an alias for the "step" command !s # shows the value of variable step. !!s # Evaluates !s (or "not s"). The first ! is indicates evaluate. info program;; list # Runs two commands "info program" and "list" pr "hi ;;-)" # Syntax error since ;; splits the line and " is not closed. !puts "hi ;;-)" # One way to do the above. See also "alias", "irb", "set auto eval", and "set auto irb".