class Byebug::TracevarCommand
Show (and possibily stop) at every line that changes a global variable.
Public Class Methods
description()
click to toggle source
# File lib/byebug/commands/tracevar.rb, line 16 def self.description <<-DESCRIPTION tr[acevar] <variable> [[no]stop] #{short_description} If "stop" is specified, execution will stop every time the variable changes its value. If nothing or "nostop" is specified, execution won't stop, changes will just be logged in byebug's output. DESCRIPTION end
regexp()
click to toggle source
# File lib/byebug/commands/tracevar.rb, line 10 def self.regexp /^\s* tr(?:acevar)? (?: \s+ (\S+))? # (variable-name)? (?: \s+ (stop|nostop))? \s*$/x end
short_description()
click to toggle source
# File lib/byebug/commands/tracevar.rb, line 28 def self.short_description "Enables tracing of a global variable" end
Public Instance Methods
execute()
click to toggle source
# File lib/byebug/commands/tracevar.rb, line 32 def execute var = @match[1] return errmsg(pr("trace.errors.needs_global_variable")) unless var return errmsg(pr("trace.errors.var_is_not_global", name: var)) unless global_variables.include?(:"#{var}") stop = @match[2] && @match[2] !~ /nostop/ instance_eval do trace_var(:"#{var}") { |val| on_change(var, val, stop) } end puts pr("trace.messages.success", var: var) end
Private Instance Methods
on_change(name, value, stop)
click to toggle source
# File lib/byebug/commands/tracevar.rb, line 48 def on_change(name, value, stop) puts pr("trace.messages.on_change", name: name, value: value) context.step_out(1, false) if stop end