Pry navigation commands via debugger (formerly ruby-debug)
Fast execution control in Pry
Adds step, next, finish, and continue commands and
breakpoints to Pry using debugger.
To use, invoke pry normally. No need to start your script or app differently.
def some_method
binding.pry # Execution will stop here.
puts 'Hello World' # Run 'step' or 'next' in the console to move here.
end
For a complete debugging environment, add
pry-stack_explorer for call-stack frame navigation.
step: Step execution into the next line or method. Takes an optional numeric
argument to step multiple times.
next: Step over to the next line within the same frame. Also takes an
optional numeric argument to step multiple lines.
finish: Execute until current stack frame returns.
continue: Continue program execution and end the Pry session.
You can set and adjust breakpoints directly from a Pry session using the
following commands:
break: Set a new breakpoint from a line number in the current file, a file
and line number, or a method. Pass an optional expression to create a
conditional breakpoint. Edit existing breakpoints via various flags.
Examples:
break SomeClass#run Break at the start of `SomeClass#run`.
break Foo#bar if baz? Break at `Foo#bar` only if `baz?`.
break app/models/user.rb:15 Break at line 15 in user.rb.
break 14 Break at line 14 in the current file.
break --condition 4 x > 2 Change condition on breakpoint #4 to 'x > 2'.
break --condition 3 Remove the condition on breakpoint #3.
break --delete 5 Delete breakpoint #5.
break --disable-all Disable all breakpoints.
break List all breakpoints. (Same as `breakpoints`)
break --show 2 Show details about breakpoint #2.
Type break --help
from a Pry session to see all available options.
breakpoints: List all defined breakpoints. Pass -v
or --verbose
to see
the source code around each breakpoint.
pry-debugger is not yet thread-safe, so only use in single-threaded
environments.
Only supports MRI 1.9.2 and 1.9.3. For a pure ruby approach not reliant on
debugger, check out pry-nav. Note: pry-nav and
pry-debugger cannot be loaded together.
Support for pry-remote (>= 0.1.4) is also included. Requires
explicity requiring pry-debugger, not just relying on pry’s plugin loader.
Want to debug a Rails app running inside foreman? Add to your
Gemfile:
gem 'pry'
gem 'pry-remote'
gem 'pry-stack_explorer'
gem 'pry-debugger'
Then add binding.remote_pry
where you want to pause:
class UsersController < ApplicationController
def index
binding.remote_pry
...
end
end
Load a page that triggers the code. Connect to the session:
$ bundle exec pry-remote
Using Pry with Rails? Check out Jazz Hands.
Stepping through code often? Add the following shortcuts to ~/.pryrc
:
if defined?(PryDebugger)
Pry.commands.alias_command 'c', 'continue'
Pry.commands.alias_command 's', 'step'
Pry.commands.alias_command 'n', 'next'
Pry.commands.alias_command 'f', 'finish'
end
Patches and bug reports are welcome. Just send a pull request or
file an issue. Project changelog.