【问题标题】:Make Byebug finish executing without exiting Pry使 Byebug 在不退出 Pry 的情况下完成执行
【发布时间】:2015-06-03 17:46:49
【问题描述】:

当我在 Rails 中使用 Byebug 设置断点时,有时我希望它完成执行,但 github 上的指南说要使用 exit,它也会退出 Pry。如果断点在循环中,重复输入continue 会很烦人。

有没有办法在不退出 Rails 控制台的情况下停止 byebug?

【问题讨论】:

  • 你可以试试命令“abort”,它会中止当前的执行

标签: ruby-on-rails ruby pry byebug


【解决方案1】:

在 Rails 控制台或 Rails 的服务器中运行 byebug 时,我通常只通过按 Ctrl+D 退出 byebug。

这种方法的问题是,如果您在 Rails 的服务器中执行此操作,那么 Byebug 将不会在下次遇到代码中任何地方的 byebug 语句时停止并调试。但它在 Rails 控制台中完美运行。

【讨论】:

    【解决方案2】:

    试试!!!。它适用于pry gem,但不确定它是否适用于 byebug。

    【讨论】:

    • ? ? ? ? ? ?
    【解决方案3】:

    嗯,这不是最优雅的解决方案,但到目前为止它对我有用。

    如果您的 Rails 应用程序中有一个基本控制器,您可以添加一个访问器来保存一个变量,说明您是否希望进行调试:

    attr_accessor :debugging
    

    然后添加/修改初始化程序以在每个请求(或每次为该对象创建实例时)将变量设置为 true:

    def initialize
      @debugging=true
      super
    end
    

    最后,在任何你想要这种行为的地方,始终使用带条件的 byebug 调用:

    byebug if debugging
    

    然后,当您在 IRB 控制台并且想要退出调试器但继续执行您刚刚设置变量的代码时:

    @debugging=false; finish
    

    您甚至可以将其封装在帮助程序中或做一些 OOP 魔术,但这是一个很好的起点。好消息是,如果您重复请求,您将再次获得标准行为,除非您再次将变量设置为 false

    【讨论】:

      【解决方案4】:

      在控制台中输入 finish 会退出 byebug,而不会关闭 pry/rails 控制台/rails 服务器。

      Ctrl + D 也可以。

      【讨论】:

      • finish 有帮助,但它并没有真正做到你所说的,不知何故它在代码中变得更深......
      【解决方案5】:

      转到您的代码并删除byebug并保存,然后在buybug终端中输入continue,然后按回车键。

      Tadaaa,您的应用程序将继续运行,您将退出 byebug all 而无需关闭您的应用程序。

      【讨论】:

        【解决方案6】:
        (byebug) quit
        Really quit? (y/n) y
        user ~
        

        到目前为止,唯一一个对我来说运行迅速且没有问题的。

        【讨论】:

          【解决方案7】:

          abort 应该中止执行并将您带回您的服务器或控制台。

          如果您在调试器中使用了一段时间,服务器的运行速度可能会慢得多。如果是这种情况,使用exit 退出 byebug 和服务器,然后重新启动可能仍然是更好的选择。

          【讨论】:

            【解决方案8】:
            【解决方案9】:

            如果你想退出循环,试试skip

            只要它与当前断点不同,它就会一直运行到下一个断点。

            然后,一旦您退出循环,您就可以continue

            【讨论】:

              【解决方案10】:

              从代码中删除“调试器”并在控制台中输入“完成”

              【讨论】:

              • 尝试从代码中删除 'byebug',但之后它一直中断,就好像它在那里一样。尝试“继续”和“完成”命令的行为相同。
              • 这行不通。在您退出控制台之前,不会重新加载代码。
              • 不确定删除调试器是干什么用的,但是在 byebug 界面中输入 finish 会退出 byebug 而不关闭 rails 控制台。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-12
              • 2019-02-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多