Byebug 如何在没有断点的情况下继续
How to continue without breakpoints in Byebug
使用 byebug
gem 使我能够 continue
直到下一个断点:
(byebug) help
break -- Sets breakpoints in the source code
catch -- Handles exception catchpoints
condition -- Sets conditions on breakpoints
continue -- Runs until program ends, hits a breakpoint or reaches a line
delete -- Deletes breakpoints
disable -- Disables breakpoints or displays
display -- Evaluates expressions every time the debugger stops
down -- Moves to a lower frame in the stack trace
edit -- Edits source files
enable -- Enables breakpoints or displays
finish -- Runs the program until frame returns
frame -- Moves to a frame in the call stack
help -- Helps you using byebug
history -- Shows byebug's history of commands
info -- Shows several informations about the program being debugged
interrupt -- Interrupts the program
irb -- Starts an IRB session
kill -- Sends a signal to the current process
list -- Lists lines of source code
method -- Shows methods of an object, class or module
next -- Runs one or more lines of code
pry -- Starts a Pry session
ps -- Evaluates an expression and prettyprints & sort the result
quit -- Exits byebug
restart -- Restarts the debugged program
save -- Saves current byebug session to a file
set -- Modifies byebug settings
show -- Shows byebug settings
source -- Restores a previously saved byebug session
step -- Steps into blocks or methods one or more times
thread -- Commands to manipulate threads
tracevar -- Enables tracing of a global variable
undisplay -- Stops displaying all or some expressions when program stops
untracevar -- Stops tracing a global variable
up -- Moves to a higher frame in the stack trace
var -- Shows variables and its values
where -- Displays the backtrace
我找遍了,找不到 "continue without breakpoints" 的方法。我能想到的唯一方法是删除或注释 byebug
语句,使用 q!
退出并重新启动测试。
如何在 Ruby 中的其他 byebug
语句不停止的情况下继续?
代码中的 byebug
方法调用不是 'breakpoint'(考虑帮助输出中对断点的引用)。
根据帮助输出,可以使用 disable
命令禁用 breakpoint
s。但这并不能解决您的问题,因为下一个 byebug
将再次暂停执行。
因为byebug
只是一个方法调用,你可以让它成为有条件的:
byebug if SomeModule.byebug?
然后,在 SomeModule 中,您可以使用全局变量来切换它 on/off。您要么必须在对 byebug 的所有调用中执行此操作,要么可以对 byebug 方法进行猴子修补以执行相同的操作,alias_method_chain
或类似的方法。
"Make Byebug finish executing without exiting Pry" 是类似的答案。
我刚刚在 code 中发现,您可以使用以下方法完全停止 byebug:
Byebug.mode = :off
您无法重新打开它,因为它不会再附着在自己身上,但这很方便,例如当只是调试你想要完成的脚本时 运行.
从 byebug 11.0.0 开始,您可以使用 continue!
或别名 c!
。
查看此 PR https://github.com/deivid-rodriguez/byebug/pull/524
如果您正在使用 Rails,您可能希望根据新请求将其重置,然后您可以添加过滤器:
# application_controller.rb
before_action do
if defined?(Byebug) && Byebug.mode == :off && Rails.env.development?
Byebug.mode = nil
end
end
使用 byebug
gem 使我能够 continue
直到下一个断点:
(byebug) help
break -- Sets breakpoints in the source code
catch -- Handles exception catchpoints
condition -- Sets conditions on breakpoints
continue -- Runs until program ends, hits a breakpoint or reaches a line
delete -- Deletes breakpoints
disable -- Disables breakpoints or displays
display -- Evaluates expressions every time the debugger stops
down -- Moves to a lower frame in the stack trace
edit -- Edits source files
enable -- Enables breakpoints or displays
finish -- Runs the program until frame returns
frame -- Moves to a frame in the call stack
help -- Helps you using byebug
history -- Shows byebug's history of commands
info -- Shows several informations about the program being debugged
interrupt -- Interrupts the program
irb -- Starts an IRB session
kill -- Sends a signal to the current process
list -- Lists lines of source code
method -- Shows methods of an object, class or module
next -- Runs one or more lines of code
pry -- Starts a Pry session
ps -- Evaluates an expression and prettyprints & sort the result
quit -- Exits byebug
restart -- Restarts the debugged program
save -- Saves current byebug session to a file
set -- Modifies byebug settings
show -- Shows byebug settings
source -- Restores a previously saved byebug session
step -- Steps into blocks or methods one or more times
thread -- Commands to manipulate threads
tracevar -- Enables tracing of a global variable
undisplay -- Stops displaying all or some expressions when program stops
untracevar -- Stops tracing a global variable
up -- Moves to a higher frame in the stack trace
var -- Shows variables and its values
where -- Displays the backtrace
我找遍了,找不到 "continue without breakpoints" 的方法。我能想到的唯一方法是删除或注释 byebug
语句,使用 q!
退出并重新启动测试。
如何在 Ruby 中的其他 byebug
语句不停止的情况下继续?
代码中的 byebug
方法调用不是 'breakpoint'(考虑帮助输出中对断点的引用)。
根据帮助输出,可以使用 disable
命令禁用 breakpoint
s。但这并不能解决您的问题,因为下一个 byebug
将再次暂停执行。
因为byebug
只是一个方法调用,你可以让它成为有条件的:
byebug if SomeModule.byebug?
然后,在 SomeModule 中,您可以使用全局变量来切换它 on/off。您要么必须在对 byebug 的所有调用中执行此操作,要么可以对 byebug 方法进行猴子修补以执行相同的操作,alias_method_chain
或类似的方法。
"Make Byebug finish executing without exiting Pry" 是类似的答案。
我刚刚在 code 中发现,您可以使用以下方法完全停止 byebug:
Byebug.mode = :off
您无法重新打开它,因为它不会再附着在自己身上,但这很方便,例如当只是调试你想要完成的脚本时 运行.
从 byebug 11.0.0 开始,您可以使用 continue!
或别名 c!
。
查看此 PR https://github.com/deivid-rodriguez/byebug/pull/524
如果您正在使用 Rails,您可能希望根据新请求将其重置,然后您可以添加过滤器:
# application_controller.rb
before_action do
if defined?(Byebug) && Byebug.mode == :off && Rails.env.development?
Byebug.mode = nil
end
end