module DEBUGGER__::DAP_TraceInspector::Custom_ThreadClient - debug: Ruby Standard Library Documentation

# module DEBUGGER__::DAP_TraceInspector::Custom_ThreadClient

### Public Instance Methods

custom_dap_request_rdbgTraceInspector(req) click to toggle source

    # File debug-1.10.0/lib/debug/dap_custom/traceInspector.rb, line 276
    def custom_dap_request_rdbgTraceInspector(req)
      cmd = req.dig('arguments', 'command')
      case cmd
      when 'record'
        process_record_cmd(req)
      else
        raise "Unknown command #{cmd}"
      end
    end

process_record_cmd(req) click to toggle source

    # File debug-1.10.0/lib/debug/dap_custom/traceInspector.rb, line 286
    def process_record_cmd(req)
      cmd = req.dig('arguments', 'subCommand')
      case cmd
      when 'enable'
        size = req.dig('arguments', 'maxLogSize')
        @recorder = Custom_Recorder.new max_log_size: size
        @recorder.enable
        event! :protocol_result, :rdbgTraceInspector, req
      when 'disable'
        if @recorder&.enabled?
          @recorder.disable
        end
        @recorder = nil
        event! :protocol_result, :rdbgTraceInspector, req
      when 'collect'
        logs = []
        log_index = nil
        trace_cnt = 0
        unless @recorder.nil?
          log_index = @recorder.log_index
          @recorder.log.each{|frames|
            crt_frame = frames[0]
            log = {
              name: crt_frame.name,
              location: {
                path: crt_frame.location.path,
                line: crt_frame.location.lineno,
              },
              depth: crt_frame.frame_depth
            }
            if params = crt_frame.iseq_parameters_info
              log[:parameters] = params
            end
            if return_str = crt_frame.return_str
              log[:returnValue] = return_str
            end
            logs << log
          }
          trace_cnt = @recorder.dropped_trace_cnt
          @recorder.dropped_trace_cnt = 0
        end
        event! :protocol_result, :rdbgTraceInspector, req, logs: logs, stoppedIndex: log_index, dropped_trace_cnt: trace_cnt
      else
        raise "Unknown command #{cmd}"
      end
    end