- Ruby Basics
- Ruby - Home
- Ruby - Overview
- Ruby - Environment Setup
- Ruby - Syntax
- Ruby - Classes and Objects
- Ruby - Variables
- Ruby - Operators
- Ruby - Comments
- Ruby - IF...ELSE
- Ruby - Loops
- Ruby - Methods
- Ruby - Blocks
- Ruby - Modules
- Ruby - Strings
- Ruby - Arrays
- Ruby - Hashes
- Ruby - Date & Time
- Ruby - Ranges
- Ruby - Iterators
- Ruby - File I/O
- Ruby - Exceptions
- Ruby Advanced
- Ruby - Object Oriented
- Ruby - Regular Expressions
- Ruby - Database Access
- Ruby - Web Applications
- Ruby - Sending Email
- Ruby - Socket Programming
- Ruby - Ruby/XML, XSLT
- Ruby - Web Services
- Ruby - Tk Guide
- Ruby - Ruby/LDAP Tutorial
- Ruby - Multithreading
- Ruby - Built-in Functions
- Ruby - Predefined Variables
- Ruby - Predefined Constants
- Ruby - Associated Tools
- Ruby Useful Resources
- Ruby - Quick Guide
- Ruby - Useful Resources
- Ruby - Discussion
- Ruby - Ruby on Rails Tutorial
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.
Sr.No. | Command & Description |
---|---|
1 | b[reak] [< file| class>:]< line| method> Sets breakpoint to some position. Breakpoint is a place where you want to pause program execution for debugging purpose. |
2 | wat[ch] expression Sets watchpoints. |
3 | cat[ch] (exception|off) Sets catchpoint to an exception. |
4 |
b[reak] Displays breakpoints and watchpoints. |
5 | del[ete] [n] Deletes breakpoints. |
6 | disp[lay] expression Displays value of expression. |
7 | undisp[lay] [ n] Removes display of n |
8 | c[ont] Continues execution. |
9 | s[tep] [ n] Executes next n lines stepping into methods. |
10 | n[ext] [ n] Executes next n lines stepping over methods. |
11 | w[here] Displays stack frame |
12 | f[rame] Synonym for where. |
13 | l[ist][<-| n- m>] Displays source lines from n to m. |
14 | up [ n] Moves up n levels in the stack frame. |
15 | down [ n] Moves down n levels in the stack frame. |
16 | fin[ish] Finishes execution of the current method. |
17 | tr[ace] [on|off] Toggles trace mode on and off. |
18 | q[uit] Exits debugger. |
19 | v[ar] g[lobal] Displays global variables. |
20 | v[ar] l[ocal] Displays local variables. |
21 | v[ar] i[instance] object Displays instance variables of object |
22 | v[ar] c[onst] object Displays constants of object. |
23 | m[ethod] i[instance] object Displays instance methods of object. |
24 | m[ethod] class| module Displays instance methods of the class or module. |
25 | th[read] l[ist] Displays threads. |
26 | th[read] c[ur[rent]] Displays current thread. |
27 | th[read] n Stops specified thread. |
28 | th[read] stop > Synonym for th[read] n. |
29 | th[read] c[ur[rent]] n> Synonym for th[read] n |
30 | th[read] resume > Resumes thread n |
31 | p expression Evaluates the expression |
32 | h[elp] Displays help message |
33 | everything else Evaluates. |
Example
Consider the following file hello.rb, which needs to be debugged −
#!/usr/bin/env ruby class Hello def initialize( hello ) @hello = hello end def hello @hello end end salute = Hello.new( "Hello, Mac!" ) puts salute.hello
Here is one interactive session captured. Given commands are written in bold −
[root@ruby]# ruby -r debug hello.rb Debug.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! [root@ruby]#