ruby / debug

Debugging functionality for Ruby
BSD 2-Clause "Simplified" License
1.1k stars 125 forks source link

`!!!` to fast forward breakpoints like in pry #1084

Open adillari opened 4 months ago

adillari commented 4 months ago

Pry had a feature where you could fast forward all subsequent breaks if you entered !!!. It would essentially automatically continue the subsequent breaks. It would be awesome to to have something like that in debug.

ko1 commented 3 months ago

does it mean disable all breakpoints?

st0012 commented 2 months ago

Since !!! calls Kernel.exit underneath, I think the equivalent here is simply typing exit. Pry has another command called disable_pry, which will exit the current session and disable all the later breakpoints. Looks like this is what the author is looking for?

joshuay03 commented 2 months ago

Pry has another command called disable_pry, which will exit the current session and disable all the later breakpoints. Looks like this is what the author is looking for?

Not OP, but it would be great if debug had something similar to disable-pry. We just switched from using pry to debug in our Rails monolith and that seems to be one of the features that's "missing". I'm planning on implementing a temporary solution in our codebase, but it's not ideal...

Hack ```ruby module Kernel mattr_accessor :debugger_method, instance_accessor: false def disable_debug return unless Kernel.respond_to?(:debugger) Kernel.debugger_method = method(:debugger) Kernel.define_method(:debugger) { nil } nil end def enable_debug return unless Kernel.debugger_method Kernel.define_method(:debugger, Kernel.debugger_method) Kernel.debugger_method = nil nil end end ```
joshuay03 commented 2 months ago

Having played with debug a bit more, I think I now understand what OP meant.

In pry, !!! would exit, but then on a subsequent request, execution would halt at a breakpoint again. With debug however, once you exit (at least when using it with Rails + puma), you need to restart the server to hit another breakpoint.

If for example you're stuck in a loop, with pry you can use !!!, remove your breakpoint and refresh the page. And if you put a breakpoint back in, and continue making requests, it'll halt as usual. But that's not the case with debug...

adillari commented 2 months ago

@joshuay03 That's what I mean, yes. It was quite useful in a Rails setting.