当我在Rails中用Byebug设置断点时,有时我希望它完成执行,但github上的指南说使用exit
,它也退出Pry。如果断点在循环中,重复键入continue
可能会很烦人。
有没有办法在不退出Rails控制台的情况下停止byebug?
在Rails控制台或Rails服务器中运行byebug
时,我通常只通过点击Ctrl+D来退出byebug。
这种方法的问题是,如果你在Rails的服务器上这样做,那么Byebug下次在代码中的任何地方遇到byebug
语句时都不会停止并调试。但它在Rails控制台中运行得很好。
尝试!!!
。它在priry gem上有效,但不确定它是否在byebug上有效。
这不是最优雅的解决方案,但到目前为止它对我很有效。
如果您的rails应用程序中有一个基本控制器,您可以添加一个访问器来保存一个变量,该变量表示您是否希望进行调试:
attr_accessor :debugging
然后添加/修改初始值设定项,在每次请求时(或每次为该对象创建实例时(将变量设置为true:
def initialize
@debugging=true
super
end
最后,无论你想在哪里使用这种行为,都要使用带有条件的byebug调用:
byebug if debugging
然后,当你在IRB控制台,你想退出调试器,但继续执行代码时,你只需要设置变量:
@debugging=false; finish
你甚至可以把它封装在一个助手中,或者做一些OOP魔术,但这是一个很好的起点。好的是,如果您重复请求,除非您再次将变量设置为false
,否则您将再次获得标准行为。
如果要退出循环,请尝试skip
。
只要它与当前断点不同,它就会一直运行到下一个断点。
然后,一旦你脱离了循环,你就可以continue
。
在控制台中键入finish
将退出byebug,而不会关闭pry/rails控制台/rrails服务器。
Ctrl+D也可以。
转到您的代码并删除byebug
并保存,然后在buybug终端中写入continue
,然后按enter。
Tadaaa你的应用程序将继续,你将在不关闭应用程序的情况下退出byebug。
尝试continue
或finish
来源:https://edgeguides.rubyonrails.org/debugging_rails_applications.html#resuming-执行
从代码中删除"调试器",并在控制台中键入"finish">
(byebug) quit
Really quit? (y/n) y
user ~
到目前为止,唯一一个能快速工作且没有问题的。