Ruby Debugger


It doesn't matter how easy a language is to use, it usually contains some bugs if it is more than a few lines long. To help deal with bugs, the standard distribution of Ruby includes a debugger.

In order to start the Ruby debugger, load the debug library using the command-line option -r debug. The debugger stops before the first line of executable code and asks for the input of user commands.

Usage Syntax:

Here is the usage syntax to use ruby debugger:

$ ruby -r debug filename[, ...]

Ruby Debugger Commands:

Here is a complete list of commands, which you can use while debugging your program. Here, it is not necessary to use complete keyword to give a command, part given inside [...] is option.

SNCommand with Description
1b[reak] [< file| class>:]< line| method>

Sets breakpoint to some position. Breakpoint is a place where you want to pause program execution for debugging purpose.

2wat[ch] expression

Sets watchpoints

3cat[ch] (exception|off)

Sets catchpoint to an exception.


Displays breakpoints and watchpoints

5del[ete] [n]

Deletes breakpoints

6disp[lay] expression

Displays value of expression

7undisp[lay] [ n]

Removes display of n


Continues execution

9s[tep] [ n]

Executes next n lines stepping into methods

10n[ext] [ n]

Executes next n lines stepping over methods


Displays stack frame


Synonym for where

13l[ist][<-| n- m>]

Displays source lines from n to m

14up [ n]

Moves up n levels in the stack frame

15down [ n]

Moves down n levels in the stack frame


Finishes execution of the current method

17tr[ace] [on|off]

Toggles trace mode on and off


Exits debugger

19v[ar] g[lobal]

Displays global variables

20v[ar] l[ocal]

Displays local variables

21v[ar] i[instance] object

Displays instance variables of object

22v[ar] c[onst] object

Displays constants of object

23m[ethod] i[instance] object

Displays instance methods of object

24m[ethod] class| module

Displays instance methods of the class or module

25th[read] l[ist]

Displays threads

26th[read] c[ur[rent]]

Displays current thread

27th[read] n

Stops specified thread

28th[read] stop >

Synonym for th[read] n

29th[read] c[ur[rent]] n>

Synonym for th[read] n

30th[read] resume >

Resumes thread n

31p expression

Evaluates the expression


Displays help message

33everything else



Consider the following file hello.rb, which needs to be debugged:

#!/usr/bin/env ruby
class Hello
   def initialize( hello )
      @hello = hello
   def hello

salute = "Hello, Mac!" )
puts salute.hello

Here is one interactive session captured. Given commands are written in bold:

[root@ruby]# ruby -r debug hello.rb
Emacs support available.

hello.rb:3:class Hello
(rdb:1) v l
  salute => nil
(rdb:1) b 10
Set breakpoint 1 at hello.rb:10
(rdb:1) c
Hello, Mac!