Sha256: 1d35a4187b0a47d34fef56009a81e55a6189c93c0b71e33e360f144706055042

Contents?: true

Size: 1.72 KB

Versions: 6

Compression:

Stored size: 1.72 KB

Contents

module Trepan
  class TraceCommand < OldCommand # :nodoc:
    def regexp
      /^\s* tr(?:ace)? (?: \s+ (\S+))         # on |off | var(iable)
                       (?: \s+ (\S+))?        # (all | variable-name)?
                       (?: \s+ (\S+))? \s*    # (stop | nostop)? 
       $/ix
    end

    def execute
      if @match[1] =~ /on|off/
        onoff = 'on' == @match[1] 
        if @match[2]
          Debugger.current_context.tracing = onoff
          print "Tracing %s all threads.\n" % (onoff ? 'on' : 'off')
        else
          Debugger.tracing = onoff
          print "Tracing %s on current thread.\n"  % (onoff ? 'on' : 'off')
        end
      elsif @match[1] =~ /var(?:iable)?/
        varname=@match[2]
        if debug_eval("defined?(#{varname})")
          if @match[3] && @match[3] !~ /(:?no)?stop/
            errmsg("expecting 'stop' or 'nostop'; got %s\n" % @match[3])
          else
            dbg_cmd = if @match[3] && (@match[3] !~ /nostop/) 
                        'debugger' else '' end
          end
          eval("
           trace_var(:#{varname}) do |val|
              print \"traced variable #{varname} has value \#{val}\n\"
              #{dbg_cmd}
           end")
        else
          errmsg "#{varname} is not a global variable.\n"
        end
      else 
        errmsg("expecting 'on', 'off', 'var' or 'variable'; got: %s\n" %
               @match[1])
      end
    end

    class << self
      def help_command
        'trace'
      end

      def help(cmd)
        %{
          tr[ace] (on|off)\tset trace mode of current thread
          tr[ace] (on|off) all\tset trace mode of all threads
          tr[ace] var(iable) VARNAME [stop|nostop]\tset trace variable on VARNAME
        }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rb8-trepanning-0.1.6 processor/command-ruby-debug/trace.rb
rb8-trepanning-0.1.5 processor/command-ruby-debug/trace.rb
rb8-trepanning-0.1.4 processor/command-ruby-debug/trace.rb
rb8-trepanning-0.1.3 processor/command-ruby-debug/trace.rb
rb8-trepanning-0.1.3-universal-ruby-1.9.2 processor/command-ruby-debug/trace.rb
rb8-trepanning-0.1.3-universal-ruby-1.8.7 processor/command-ruby-debug/trace.rb