debugger
TIL: How to Debug Ruby Applications with the Built-in debug Gem
Today, I learned how to leverage Ruby's integrated debug gem for more effective troubleshooting. Here's a breakdown of what I discovered:
Why Use the debug Gem?
- Integrated: It's part of Ruby's standard library since version 2.6, so no need for external gems.
- Powerful: Offers features like breakpoints, variable inspection, stepping through code, and more.
- Familiar: Similar in concept to other debuggers you might have used (e.g., pdb in Python, gdb for C).
Getting Started
-
Require the Gem:
require 'debug' -
Set Breakpoints: Use
debuggerwithin your code to halt execution at specific points.def calculate(x, y) debugger # Execution stops here result = x * y + 5 puts result end
Basic Commands
Here are some essential commands to use when the debugger pauses your code:
continue(orc): Resume execution until the next breakpoint or the end of the script.step(ors): Execute the next line of code and step into method calls.next(orn): Execute the next line of code but step over method calls.break <line_number>: Set a new breakpoint at a specific line.p <variable>: Print the current value of a variable.quit: Exit the debugger.
Example Debugging Session
$ ruby my_script.rb
Debugger stopped.
[1, 12] in my_script.rb
11:
12: debugger # Execution stops here
=> 13: result = x * y + 5
14: puts result
15: end
(rdbg) p x
10
(rdbg) p y
2
(rdbg) next
[1, 14] in my_script.rb
13: result = x * y + 5
=> 14: puts result
15: end
(rdbg) p result
25
(rdbg) continue
25
Advanced Features
- Conditional Breakpoints: Stop only when certain conditions are met.
- Catchpoints: Trigger breakpoints on specific exceptions.
- Remote Debugging: Debug applications running on different machines.
more information here https://github.com/ruby/debug