【问题标题】:Ruby/Rails Debugging: Break when a value of an object/variable changesRuby/Rails 调试:对象/变量的值更改时中断
【发布时间】:2014-01-30 14:31:47
【问题描述】:

在 Ruby on Rails 中调试时,有什么方法可以让调试器在特定内存位置的值或变量/对象的值发生变化时立即中断执行?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-debug


    【解决方案1】:

    您希望执行多少中断?

    如果变量是从实例外部设置的,那么它将通过某种方法访问。您可以为此目的重写这样的方法。

    # define
    class Foo
      def bar
        @bar ||= 'default'
      end
    
      def bar=(value)
        @bar = value
      end
    end
    
    # overwrite
    class Foo
      def bar=(value)
        super
        abort("Message goes here")
      end
    end
    

    【讨论】:

    • 就我而言,我不知道值在哪里发生变化。即我不知道发生更改的代码的确切功能/位置。所以我想使用调试器的这种功能(如果可用),只要该值更改,调试器就会中断执行,我将能够找到那段特定的代码。
    • 这只是一个用于查找从何处调用更改的策略的指示。如果它在实例内部,您可以确保对变量的所有访问都通过 getter/setter 方法。如果它来自外部调用,则适用类似的推理。但是,如果数据正在随着 db 表的批量更新而发生更改,那么所有的赌注都将被取消。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2017-09-14
    相关资源
    最近更新 更多