让Byebug完成执行而不退出Pry

时间:2015-06-03 17:46:50

标签: ruby-on-rails ruby pry byebug

当我在Rails中使用Byebug设置断点时,我有时希望它完成执行,但github上的指南说使用exit也退出Pry。如果断点处于循环中,重复键入continue可能会很烦人。

无论如何在没有退出Rails控制台的情况下停止byebug?

9 个答案:

答案 0 :(得分:19)

在Rails控制台或Rails'下运行byebug时服务器我通常只通过按 Ctrl + D 来退出。

如果你在Rails'然后,Byebug将在下次在代码中的byebug语句中点击时停止并调试。但它在Rails控制台中运行良好。

答案 1 :(得分:2)

这不是最优雅的解决方案,但到目前为止它对我有用。

如果您的rails应用程序中有一个基本控制器,您可以添加一个访问器来保存一个变量,说明您是否要进行调试:

import {MockFooBar} from "./mockFooBar";
kernel.bind(new TypeBinding<FooBarInterface>("FooBarInterface", MockFooBar));

然后添加/修改初始化程序以在每个请求上将变量设置为true(或者每次为该对象创建实例时):

attr_accessor :debugging

最后,总是使用带有条件的byebug调用,只要你想要这种行为:

def initialize
  @debugging=true
  super
end

然后当您在IRB控制台并且想要退出调试器但继续执行代码时,您只需设置变量:

byebug if debugging

你甚至可以将它封装在帮助器中或做一些OOP魔术,但这是一个很好的起点。好的一点是,如果您重复请求,您将再次获得标准行为,除非您再次将变量设置为@debugging=false; finish

答案 2 :(得分:1)

在控制台中键入finish会退出byebug,而不关闭pry / rails控制台/ rails服务器。

Ctrl + D 也可以。

答案 3 :(得分:0)

转到您的代码并删除byebug并保存,然后在buybug终端中输入continue,然后按Enter。

Tadaaa,您的应用程序将继续运行,并且您将在不关闭应用程序的情况下退出byebug。

答案 4 :(得分:0)

(byebug) quit
Really quit? (y/n) y
user ~

到目前为止,唯一对我来说没有问题的快速工作的

答案 5 :(得分:0)

abort应该中止执行并将您带回到服务器或控制台。

如果您已经在调试器中使用了一段时间,则服务器可能开始运行得慢得多。如果是这种情况,请使用exit退出byebug和服务器,然后重新启动仍然是更好的选择。

答案 6 :(得分:0)

答案 7 :(得分:0)

如果您想退出循环,请尝试 skip

只要与当前断点不同,它就会一直运行到下一个断点。

然后,一旦您退出循环,您就可以continue

答案 8 :(得分:-1)

从您的代码中删除&#34;调试器并输入&#34;完成&#34;在控制台