public override Task <EvaluateExpressionLldbEvalResponse> EvaluateExpressionLldbEval( EvaluateExpressionLldbEvalRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); IDictionary <string, SbValue> contextValues = new Dictionary <string, SbValue>(); if (request.ContextVariables != null) { foreach (var contextVariable in request.ContextVariables) { var val = valueStore.GetObject(contextVariable.Value.Id); if (val != null) { contextValues.Add(contextVariable.Name, val.GetSbValue()); } } } var result = value.EvaluateExpressionLldbEval(request.Expression, contextValues); var response = new EvaluateExpressionLldbEvalResponse(); if (result != null) { response.Value = GrpcFactoryUtils.CreateValue(result, valueStore.AddObject(result)); } return(Task.FromResult(response)); }
public override Task <GetChildrenResponse> GetChildren( GetChildrenRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var children = value.GetChildren(request.Offset, request.Count); var response = new GetChildrenResponse(); for (uint n = 0; n < children.Count; ++n) { RemoteValue child = children[(int)n]; if (child != null) { response.Children[n + request.Offset] = GrpcFactoryUtils.CreateValue(child, valueStore.AddObject(child)); } } // (internal): Special case for pointers. LLDB names them $"*{value.GetName()}", but // Visual Studio just shows an empty name. if (value.TypeIsPointerType() && response.Children.ContainsKey(0) && response.Children[0].Name == $"*{value.GetName()}") { response.Children[0].Name = string.Empty; } return(Task.FromResult(response)); }
private GrpcValueInfo CreateValueInfoAndUpdateStores(RemoteValue remoteValue) { if (remoteValue == null) { return(null); } string expressionPath; var hasExpressionPath = remoteValue.GetExpressionPath(out expressionPath); var valueInfo = new GrpcValueInfo { ExpressionPath = expressionPath ?? "", HasExpressionPath = hasExpressionPath, NumChildren = remoteValue.GetNumChildren(), Summary = remoteValue.GetSummary() ?? "", TypeName = remoteValue.GetTypeName() ?? "", Value = remoteValue.GetValue() ?? "", ValueType = EnumUtil.ConvertTo <Debugger.Common.ValueType>( remoteValue.GetValueType()), IsPointerType = remoteValue.TypeIsPointerType(), ByteSize = remoteValue.GetByteSize(), }; var typeInfo = remoteValue.GetTypeInfo(); if (typeInfo != null) { valueInfo.Type = GrpcFactoryUtils.CreateType( typeInfo, typeStore.AddObject(typeInfo)); } return(valueInfo); }
GrpcSbFrame CreateGrpcSbFrame(RemoteFrame frame) => frame == null ? null : new GrpcSbFrame { Id = frameStore.AddObject(frame), FunctionName = frame.GetFunctionName() ?? "", FunctionNameWithSignature = frame.GetFunctionNameWithSignature() ?? "", ProgramCounter = frame.GetPC(), LineEntry = GrpcFactoryUtils.CreateGrpcLineEntryInfo(frame.GetLineEntry()) };
public override Task <GetLineEntryResponse> GetLineEntry(GetLineEntryRequest request, ServerCallContext context) { var address = addressStore.GetObject(request.Address.Id); var response = new GetLineEntryResponse(); response.LineEntry = GrpcFactoryUtils.CreateGrpcLineEntryInfo(address.GetLineEntry()); return(Task.FromResult(response)); }
public override Task <GetChildMemberWithNameResponse> GetChildMemberWithName( GetChildMemberWithNameRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var child = value.GetChildMemberWithName(request.Name); var response = new GetChildMemberWithNameResponse(); if (child != null) { response.Child = GrpcFactoryUtils.CreateValue(child, valueStore.AddObject(child)); } return(Task.FromResult(response)); }
public override Task <CloneResponse> Clone(CloneRequest request, ServerCallContext context) { RemoteValue value = valueStore.GetObject(request.Value.Id); RemoteValue cloneResult = value.Clone(); var response = new CloneResponse(); if (cloneResult != null) { response.CloneResult = GrpcFactoryUtils.CreateValue(cloneResult, valueStore.AddObject(cloneResult)); } return(Task.FromResult(response)); }
public override Task <GetTypeInfoResponse> GetTypeInfo( GetTypeInfoRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var sbType = value.GetTypeInfo(); var response = new GetTypeInfoResponse(); if (sbType != null) { response.Type = GrpcFactoryUtils.CreateType(sbType, typeStore.AddObject(sbType)); } return(Task.FromResult(response)); }
public override Task <GetInfoResponse> GetInfo(GetInfoRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); FrameInfo <SbModule> info = frame.GetInfo((FrameInfoFlags)request.Fields); // Note: info can't be null since it's a struct. var moduleId = info.Module != null?moduleStore.AddObject(info.Module) : (long?)null; return(Task.FromResult(new GetInfoResponse { Info = GrpcFactoryUtils.CreateFrameInfo(info, moduleId) })); }
public override Task <GetCanonicalTypeResponse> GetCanonicalType( GetCanonicalTypeRequest request, ServerCallContext context) { var type = typeStore.GetObject(request.Type.Id); var canonicalType = type.GetCanonicalType(); var response = new GetCanonicalTypeResponse(); if (canonicalType != null) { response.Type = GrpcFactoryUtils.CreateType( canonicalType, typeStore.AddObject(canonicalType)); } return(Task.FromResult(response)); }
public override Task <AddressOfResponse> AddressOf( AddressOfRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var address = value.AddressOf(); var response = new AddressOfResponse(); if (address != null) { response.AddressValue = GrpcFactoryUtils.CreateValue( address, valueStore.AddObject(address)); } return(Task.FromResult(response)); }
public override Task <GetValueForExpressionPathResponse> GetValueForExpressionPath( GetValueForExpressionPathRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var childValue = value.GetValueForExpressionPath(request.ExpressionPath); GetValueForExpressionPathResponse response = new GetValueForExpressionPathResponse(); if (childValue != null) { response.Value = GrpcFactoryUtils.CreateValue( childValue, valueStore.AddObject(childValue)); } return(Task.FromResult(response)); }
public override Task <DereferenceResponse> Dereference( DereferenceRequest request, ServerCallContext context) { RemoteValue value = valueStore.GetObject(request.Value.Id); RemoteValue dereferenceResult = value.Dereference(); var response = new DereferenceResponse(); if (dereferenceResult != null) { response.DereferenceResult = GrpcFactoryUtils.CreateValue( dereferenceResult, valueStore.AddObject(dereferenceResult)); } return(Task.FromResult(response)); }
public override Task <GetRegistersResponse> GetRegisters(GetRegistersRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); List <RemoteValue> registers = frame.GetRegisters(); var response = new GetRegistersResponse(); response.Registers.Add( registers.Select(s => GrpcFactoryUtils.CreateValue( s, valueStore.AddObject(s))).ToList()); return(Task.FromResult(response)); }
public override Task <EvaluateExpressionLldbEvalResponse> EvaluateExpressionLldbEval( EvaluateExpressionLldbEvalRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); RemoteValue value = frame.EvaluateExpressionLldbEval(request.Expression); var response = new EvaluateExpressionLldbEvalResponse(); if (value != null) { response.Value = GrpcFactoryUtils.CreateValue(value, valueStore.AddObject(value)); } return(Task.FromResult(response)); }
public override Task <GetValueForVariablePathResponse> GetValueForVariablePath( GetValueForVariablePathRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); RemoteValue value = frame.GetValueForVariablePath(request.VariablePath); var response = new GetValueForVariablePathResponse(); if (value != null) { response.Value = GrpcFactoryUtils.CreateValue(value, valueStore.AddObject(value)); } return(Task.FromResult(response)); }
public override Task <EvaluateExpressionResponse> EvaluateExpression( EvaluateExpressionRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); var expressionResult = value.EvaluateExpression(request.Expression); var response = new EvaluateExpressionResponse(); if (expressionResult != null) { response.ExpressionResult = GrpcFactoryUtils.CreateValue( expressionResult, valueStore.AddObject(expressionResult)); } return(Task.FromResult(response)); }
public override Task <CreateValueFromAddressResponse> CreateValueFromAddress( CreateValueFromAddressRequest request, ServerCallContext context) { RemoteValue value = valueStore.GetObject(request.Value.Id); RemoteValue expressionResult = value.CreateValueFromAddress( request.Name, request.Address, typeStore.GetObject(request.Type.Id)); var response = new CreateValueFromAddressResponse(); if (expressionResult != null) { response.ExpressionResult = GrpcFactoryUtils.CreateValue( expressionResult, valueStore.AddObject(expressionResult)); } return(Task.FromResult(response)); }
public override Task <GetVariablesResponse> GetVariables(GetVariablesRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); List <RemoteValue> variables = frame.GetVariables( request.Arguments, request.Locals, request.Statics, request.OnlyInScope); var response = new GetVariablesResponse(); response.Variables.Add( variables.Select(s => GrpcFactoryUtils.CreateValue( s, valueStore.AddObject(s))).ToList()); return(Task.FromResult(response)); }
public override Task <FindValueResponse> FindValue(FindValueRequest request, ServerCallContext context) { RemoteFrame frame = frameStore.GetObject(request.Frame.Id); RemoteValue variable = frame.FindValue(request.VariableName, request.ValueType.ConvertTo <LldbApi.ValueType>()); var response = new FindValueResponse(); if (variable != null) { response.Variable = GrpcFactoryUtils.CreateValue( variable, valueStore.AddObject(variable)); } return(Task.FromResult(response)); }
public override Task <GetCachedViewResponse> GetCachedView( GetCachedViewRequest request, ServerCallContext context) { var value = valueStore.GetObject(request.Value.Id); value.SetFormat(request.Format.ConvertTo <LldbApi.ValueFormat>()); var response = new GetCachedViewResponse { ValueInfo = CreateValueInfoAndUpdateStores(value) }; var addressOf = value.AddressOf(); if (addressOf != null) { response.AddressValue = GrpcFactoryUtils.CreateValue( addressOf, valueStore.AddObject(addressOf)); response.AddressInfo = CreateValueInfoAndUpdateStores(addressOf); } return(Task.FromResult(response)); }
public override Task <GetFramesWithInfoResponse> GetFramesWithInfo( GetFramesWithInfoRequest request, ServerCallContext context) { var thread = threadStore.GetObject(request.Thread.Id); var framesWithInfo = thread.GetFramesWithInfo((FrameInfoFlags)request.Fields, request.StartIndex, request.MaxCount); var response = new GetFramesWithInfoResponse(); foreach (var frameWithInfo in framesWithInfo) { var grpcFrameWithInfo = new GrpcFrameWithInfo(); grpcFrameWithInfo.Frame = CreateGrpcSbFrame(frameWithInfo.Frame); FrameInfo <SbModule> info = frameWithInfo.Info; long?moduleId = info.Module != null? moduleStore.AddObject(info.Module) : (long?)null; grpcFrameWithInfo.Info = GrpcFactoryUtils.CreateFrameInfo(info, moduleId); response.FramesWithInfo.Add(grpcFrameWithInfo); } return(Task.FromResult(response)); }