Sha256: 6f618a7bc2ac60d74d0d3e4b25a834cd2970d12b94a9b2c2f57273f0ababd86f

Contents?: true

Size: 1.57 KB

Versions: 6593

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module Byebug
  module Helpers
    #
    # Utilities for thread subcommands
    #
    module ThreadHelper
      def display_context(ctx)
        puts pr("thread.context", thread_arguments(ctx))
      end

      def thread_arguments(ctx)
        {
          status_flag: status_flag(ctx),
          debug_flag: debug_flag(ctx),
          id: ctx.thnum,
          thread: ctx.thread.inspect,
          file_line: location(ctx),
          pid: Process.pid,
          status: ctx.thread.status,
          current: current_thread?(ctx)
        }
      end

      def current_thread?(ctx)
        ctx.thread == Thread.current
      end

      def context_from_thread(thnum)
        ctx = Byebug.contexts.find { |c| c.thnum.to_s == thnum }

        err = if ctx.nil?
                pr("thread.errors.no_thread")
              elsif ctx == context
                pr("thread.errors.current_thread")
              elsif ctx.ignored?
                pr("thread.errors.ignored", arg: thnum)
              end

        [ctx, err]
      end

      private

      # @todo Check whether it is Byebug.current_context or context
      def location(ctx)
        return context.location if ctx == Byebug.current_context

        backtrace = ctx.thread.backtrace_locations
        return "" unless backtrace && backtrace[0]

        "#{backtrace[0].path}:#{backtrace[0].lineno}"
      end

      def status_flag(ctx)
        return "$" if ctx.suspended?

        current_thread?(ctx) ? "+" : " "
      end

      def debug_flag(ctx)
        ctx.ignored? ? "!" : " "
      end
    end
  end
end

Version data entries

6,593 entries across 6,589 versions & 34 rubygems

Version Path
primary_connect_proto-0.8.1 vendor/bundle/ruby/2.7.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
primary_connect_proto-0.8.0 vendor/bundle/ruby/2.6.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha169 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha168 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha167 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha166 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha165 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-oathkeeper-client-0.38.25.beta1 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha164 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha163 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha162 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha161 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha160 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha159 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha158 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha157 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha156 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha155 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-client-0.0.1.alpha154 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb
ory-oathkeeper-client-0.38.24.beta1 vendor/bundle/ruby/2.5.0/gems/byebug-11.1.3/lib/byebug/helpers/thread.rb