3

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

pry -r ./config/environment

然后我设置了一个断点:

break Foo#bar

然后新建一个Foo并调用bar它:

Foo.new.bar

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

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

4

3 回答 3

5

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

[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.
于 2016-08-17T07:18:28.833 回答
1

这是我通常使用 pry-byebug 的方式

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

rails console

称呼Foo.new.bar

你现在应该看到 pry REPL

于 2016-08-16T03:05:03.153 回答
1

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

首先需要在编码开始时使用 pry-byebug gem

需要'撬-byebug'

def main # 做一些编码 puts "Hello" binding.pry # 断点将 "World" end

主要的

然后在运行它时,我的终端将返回进入 irb 模式并返回:

>     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 点或运行整个代码。或者我可以简单地键入继续。

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

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

于 2020-05-20T14:18:03.173 回答