使用 pry-byebug 的断点不会在控制台中触发

Breakpoints with pry-byebug don't trigger in the console

我正在尝试使用 pry 和 pry-byebug 在 Rails 控制台中逐步执行某些代码。我用

启动了控制台

pry -r ./config/environment

然后我设置断点:

break Foo#bar

然后创建一个新的 Foo 并在其上调用 bar:

Foo.new.bar

我预计进入 Foo#bar,但该方法只是正常执行。

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

下面是我平时使用 pry-byebug 的方式

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

运行 rails console

致电Foo.new.bar

你现在应该看到撬 REPL

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

[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.

嗯,当我使用 pry-byebug 调试我的代码时,我使用以下方式:

首先在编码的开头要求pry-byebuggem

需要'pry-byebug'

def main # 做一些编码 放 "Hello" binding.pry # 断点在这里 放 "World" 结束

主要

然后当 运行 连接它时,我的终端将 return 进入 irb 模式并且 return:

>     3: def main
>     4:   puts "Hello"
>     5:
>     6:   binding.pry
>  => 7:   puts "World!"
>     8: end
> 
> [1] pry(main)>

所以代码指示我现在所在的位置,从那时起我可以检查断点之前读取的每个变量(第 6 行)。断点表示终端还没有读取第 6 行之后的内容,所以如果我在那里有变量,终端将无法识别它们。

然后我可以键入 next,因此 binding.pry 会跳转到下一个可用的 binding.pry 点或 运行 整个代码。或者我可以简单地输入继续。

非常重要要记住的是在提交代码之前删除要求'pry-byebug'和所有断点行,因为我们不希望代码卡在那些点上,对吗?用户可能不知道如何处理它:)

希望对您有所帮助!第一次尝试为这个很棒的社区做出贡献 :D