class DEBUGGER__::UI_LocalConsole - debug: Ruby Standard Library Documentation

# class DEBUGGER__::UI_LocalConsole

### Public Class Methods

new() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 8
    def initialize
      @console = Console.new
    end

### Public Instance Methods

activate(session, on_fork: false) click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 32
    def activate session, on_fork: false
      activate_sigint unless CONFIG[:no_sigint_hook]
    end

activate_sigint() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 16
    def activate_sigint
      prev_handler = trap(:SIGINT){
        if SESSION.active?
          ThreadClient.current.on_trap :SIGINT
        end
      }
      SESSION.intercept_trap_sigint_start prev_handler
    end

after_fork_parent() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 96
    def after_fork_parent
      parent_pid = Process.pid

      at_exit{
        SESSION.intercept_trap_sigint_end
        trap(:SIGINT, :IGNORE)

        if Process.pid == parent_pid
          # only check child process from its parent
          begin
            # wait for all child processes to keep terminal
            Process.waitpid
          rescue Errno::ESRCH, Errno::ECHILD
          end
        end
      }
    end

ask(prompt) click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 54
    def ask prompt
      setup_interrupt do
        print prompt
        ($stdin.gets || '').strip
      end
    end

deactivate() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 36
    def deactivate
      deactivate_sigint
      @console.deactivate
    end

deactivate_sigint() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 25
    def deactivate_sigint
      if SESSION.intercept_trap_sigint?
        prev = SESSION.intercept_trap_sigint_end
        trap(:SIGINT, prev)
      end
    end

puts(str = nil) click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 61
    def puts str = nil
      case str
      when Array
        str.each{|line|
          $stdout.puts line.chomp
        }
      when String
        str.each_line{|line|
          $stdout.puts line.chomp
        }
      when nil
        $stdout.puts
      end
    end

quit(n) { || ... } click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 49
    def quit n
      yield
      exit n
    end

readline(prompt = '(rdbg)') click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 76
    def readline prompt = '(rdbg)'
      setup_interrupt do
        (@console.readline(prompt) || 'quit').strip
      end
    end

remote?() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 12
    def remote?
      false
    end

setup_interrupt() { || ... } click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 82
    def setup_interrupt
      SESSION.intercept_trap_sigint false do
        current_thread = Thread.current # should be session_server thread

        prev_handler = trap(:INT){
          current_thread.raise Interrupt
        }

        yield
      ensure
        trap(:INT, prev_handler)
      end
    end

width() click to toggle source

    # File debug-1.10.0/lib/debug/local.rb, line 41
    def width
      if (w = IO.console_size[1]) == 0 # for tests PTY
        80
      else
        w
      end
    end