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