【问题标题】:Breakpoints with pry-byebug don't trigger in the console带有 pry-byebug 的断点不会在控制台中触发
【发布时间】:2016-08-16 02:55:15
【问题描述】:

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

启动了控制台

pry -r ./config/environment

然后我设置一个断点:

break Foo#bar

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

Foo.new.bar

我希望步入Foo#bar,但该方法只是正常执行。

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

【问题讨论】:

  • 您是否尝试过使用基于行号的方法来解决此问题?来自文档:break app/models/user.rb:15 这似乎更加明确。
  • 另外,您能否澄清一下您是否需要在 pry-byebug 会话中执行此操作,或者您是否可以按照@kcdragon 的建议在代码本身中设置断点他的回答。如果是后者,请接受他的回答。

标签: ruby-on-rails ruby pry byebug


【解决方案1】:

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

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

【讨论】:

  • 这太棒了!注意:在 rails 控制台中,调用 binding.pry,然后调用 break ... 设置断点,然后使用 exit 或文件结束符 (^D) 退出到初始 Rails 控制台 REPL(也可能被撬)。然后从 rails 控制台,运行您要调试的代码。
【解决方案2】:

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

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

运行rails console

致电Foo.new.bar

你现在应该看到 pry REPL

【讨论】:

  • 虽然这可行,但 OP 似乎有兴趣从 pry-byebug 会话中动态添加断点。
  • 他似乎正在尝试这种方法,但我不知道这是因为他知道这种方法并且不想使用它,还是他只是需要任何方法来让它工作.
  • 这个答案绝对有价值——并不意味着它没有价值。我希望 OP 能够澄清是否需要他能够动态地执行此操作。
  • 我确实知道这种方法,但在我不想修改的库中挖掘时,上述方法通常对我很有用。 :)
【解决方案3】:

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

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

需要'pry-byebug'

def main # 做一些编码 放“你好” binding.pry # 断点在这里 把“世界” 结束

主要

然后当运行它时,我的终端将返回进入 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 点或运行整个代码。或者我可以直接键入 continue。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2020-05-31
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多