Ejemplo n.º 1
0
        private void HandleVariablesRequest(DAPRequest request, DAPVariablesRequest msg)
        {
            if (!Stopped)
            {
                throw new RequestFailedException("Cannot get variables when story is running");
            }

            long variableType = (msg.variablesReference >> 48);
            List <DAPVariable> variables;

            if (variableType == 0)
            {
                int frameIndex = (int)msg.variablesReference - 1;
                variables = GetStackVariables(msg, frameIndex);
            }
            else if (variableType == 1 || variableType == 2)
            {
                variables = EvalResults.GetVariables(msg, msg.variablesReference);
            }
            else if (variableType == 3)
            {
                int frameIndex = (int)(msg.variablesReference & 0xffffff);
                variables = GetQueryResultVariables(msg, frameIndex);
            }
            else
            {
                throw new InvalidOperationException($"Unknown variables reference type: {msg.variablesReference}");
            }

            var reply = new DAPVariablesResponse
            {
                variables = variables
            };

            Stream.SendReply(request, reply);
        }