예제 #1
0
 public void OnEvaluateFinished(UInt32 seq, BkEvaluateResponse msg)
 {
     if (PendingEvalRequests.TryGetValue(seq, out EvalRequestHandlerDelegate handler))
     {
         PendingEvalRequests.Remove(seq);
         if (msg.ErrorMessage.Length > 0)
         {
             handler(seq, StatusCode.EvalFailed, msg);
         }
         else
         {
             handler(seq, StatusCode.Success, msg);
         }
     }
     else
     {
         DAP.LogError($"Response received for evaluate request {seq} that is not pending?");
     }
 }
예제 #2
0
        private void ReceivedEvaluateResponse(DAPRequest request, DAPEvaulateRequest req, ThreadState state, BkEvaluateResponse response)
        {
            DAPEvaluateResponse evalResponse = new DAPEvaluateResponse
            {
                result             = "",
                namedVariables     = 0,
                indexedVariables   = 0,
                variablesReference = 0,
            };

            if (response.Result == null)
            {
                evalResponse.result = "(None)";
            }
            else
            {
                evalResponse.result = DbgValueToString(response.Result);

                if (response.Result.Variables != null)
                {
                    var varsRef = BackendVariableReference.FromDbg(state.Context, response.Result.Variables);
                    var varsIdx = NextVariableReference++;
                    VariableRefs.Add(varsIdx, varsRef);
                    evalResponse.variablesReference = MakeVariableRef(varsIdx);
                }
            }

            DAP.Stream.SendReply(request, evalResponse);
        }