What is Mr. Guid?

Mitchell's Ruby GUI Debugger (Mr. Guid) is a simple cross-platform Ruby GUI debugger written in Ruby using the Ruby/Gtk2 bindings for GTK+. It is only meant to be a debugger, not an editor or IDE.


Mr. Guid has all the features that Ruby's bundled debugger has, but also remote debugging.



  1. Download Mr. Guid
    (If you'd like the latest version, possibly unstable, you can get it from the SVN Repository.)
  2. Untar/unzip the files to any directory
  3. cd into the directory created (mr_guid_x.x)
  4. [Windows only] Skip the following step. You're done, but can create shortcuts as you wish. Mr. Guid must still be run from the command line/prompt though.
  5. One of the following:
    • (As root) ./install.rb to install the mr_guid executable in /usr/local/bin
    • ./install.rb --prefix=[other_dir] to install the mr_guid executable in a desired directory
    • Nothing! You can just call mr_guid by its absolute or relative path


Important Note

The Windows version of Mr. Guid can be unstable and appear to freeze. This is a combination of threading issues and TCP issues with relation to Windows only. The Unix/Linux version of Mr. Guid functions as it should. I don't have the time or patience to work out a perfectly functioning Windows version, but would welcome any help.

Starting Out (Local Debugging)

To start debugging filename normally, type in the console: mr_guid [filename] [args] (Windows users will use the appropriate shortcut or file name for mr_guid.)

Starting Out (Remote Debugging)

To start debugging filename remotely, run the command: ruby -r gdebug.rb [filename] [args] -r[=[host:]port] and then (separately): mr_guid -r[=[host:]port]
Source files will be transferred over the connection as they are needed, so local copies are not needed.
Also: -r may be substituted with --remote and can appear anywhere after file in either gdebug or mr_guid. Order does not matter.

Command Line Options

mr_guid [options] [filename] [args]

[options] can be:


Manual File Loading

Source files can be manually loaded by selecting 'load source file' from the 'debug' menu and typing in the absolute or relative path to the source file. You can then add breakpoints if desired.


Breakpoints can be placed by:

  1. Double-clicking (or activating) a source line.
  2. Selecting 'toggle breakpoint on line...' from the 'breakpoints' menu and entering the line number.


Double-clicking (or activating) local or global variables brings up the Object View. This view lists the object's instance variables (if any) and the object's available methods. In order to edit a variable, enter in the new value or expression at the bottom of the window.

Instance Variables

Variables that are objects can have instance variables. They can be viewed by double-clicking (or activating) the object which in turn brings up a window showing all instance variables. If an instance happens to be an object containing more instance variables, they can be accessed, provided that the parent object says it is readable (attr_reader for example).


Threads can be stopped or resumed by selecting the desired thread in the view and selecting the appropriate option from the menu, selecting an action and entering the thread number, or right-clicking the thread and selecting an option.


You can move around stacks by:

  1. Double-clicking (or activating) a stack in the view.
  2. Select an action from the 'stack' menu.
  3. Select 'move to stack #...' from the 'stack' menu and enter in the desired stack's number.


You can enter in any command Ruby's bundled debugger understands in the text field to execute it.




I would like to thank Matthias Georgi for all of his help in helping me improve Mr. Guid.