2016-08-16 36 views
2

我试图使用pry和pry-byebug来逐步执行Rails控制台中的某些代码。我启动了控制台pry-byebug的断点不会在控制台中触发

pry -r ./config/environment

然后我设置断点:

break Foo#bar

再做出新的Foo并在其上调用bar

Foo.new.bar

我预计步入Foo#bar,而是该方法正常执行。

有什么方法可以让这个工作流程起作用吗?

+0

你有没有尝试过使用基于行号的方法呢?从文档中:'break app/models/user.rb:15'这似乎更加明确。 – jaydel

+0

另外,如果您有要求可以在pry-byebug会话中执行此操作,或者您可以在代码中设置断点,如@kcdragon在其答案中所建议的那样,您能澄清一下吗?如果是后者,请接受他的回答。 – jaydel

回答

2

我找到了答案:调试器不可重入。所以你需要这样做:

[1] pry(main)> binding.pry 
[1] pry(main)> break Foo#bar 
Breakpoint 1: Foo#bar (Enabled) : 

6: def bar 
7: end 

[2] pry(main)> C# continue and exit the debugger we started on the first line 
=> nil 
[3] pry(main)> Foo.new.bar 
Breakpoint 1. First hit. 
1

下面是我通常使用撬byebug

调用binding.pry添加到方法的第一行Foo#bar

运行rails console

呼叫Foo.new.bar

你应该看到撬REPL现在

+0

虽然这会起作用,但OP似乎有兴趣从pry-byebug会话内动态添加断点。 – jaydel

+1

他似乎正在尝试这种方法,但我不知道这是因为他知道这种方法,不想使用它,或者他只是需要任何方式才能使其工作。 – kcdragon

+0

这个答案绝对有价值 - 并不意味着暗示它没有价值。我希望OP能澄清是否有一个要求他能够动态地做到这一点。 – jaydel

相关问题