我试图使用pry和pry-byebug来逐步执行Rails控制台中的某些代码。我启动了控制台pry-byebug的断点不会在控制台中触发
pry -r ./config/environment
然后我设置断点:
break Foo#bar
再做出新的Foo
并在其上调用bar
:
Foo.new.bar
我预计步入Foo#bar
,而是该方法正常执行。
有什么方法可以让这个工作流程起作用吗?
我试图使用pry和pry-byebug来逐步执行Rails控制台中的某些代码。我启动了控制台pry-byebug的断点不会在控制台中触发
pry -r ./config/environment
然后我设置断点:
break Foo#bar
再做出新的Foo
并在其上调用bar
:
Foo.new.bar
我预计步入Foo#bar
,而是该方法正常执行。
有什么方法可以让这个工作流程起作用吗?
我找到了答案:调试器不可重入。所以你需要这样做:
[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.
你有没有尝试过使用基于行号的方法呢?从文档中:'break app/models/user.rb:15'这似乎更加明确。 – jaydel
另外,如果您有要求可以在pry-byebug会话中执行此操作,或者您可以在代码中设置断点,如@kcdragon在其答案中所建议的那样,您能澄清一下吗?如果是后者,请接受他的回答。 – jaydel