Пример #1
0
        public static ObjectPath GetPath(IDBacktraceSymbol s)
        {
            var l = new List <string>();

            do
            {
                l.Insert(0, s.Name);
            }while (s.HasParent && (s = s.Parent) != null);

            return(new ObjectPath(l.ToArray()));
        }
Пример #2
0
        public virtual ObjectValue CreateObjectValue(IDBacktraceSymbol s, EvaluationOptions evalOptions = null)
        {
            if (s == null)
            {
                return(null);
            }

            if (evalOptions == null)
            {
                evalOptions = EvaluationOptions.DefaultOptions;
            }

            TryUpdateStackFrameInfo();

            return(CreateObjectValue(EvaluateSymbol(s), null, GetPath(s), evalOptions, s));
        }
        public AbstractType TryGetDType(IDBacktraceSymbol s)
        {
            if (!s.HasParent)
            {
                TryUpdateStackFrameInfo();

                if (ctxt == null)
                {
                    return(null);
                }

                return(AmbiguousType.Get(ExpressionTypeEvaluation.GetOverloads(new IdentifierExpression(s.Name), ctxt, null)));
            }

            return(null);
        }
Пример #4
0
        /// <summary>
        /// In here, the main evaluation to primitives, strings, arrays, objects happens
        /// </summary>
        public ISymbolValue EvaluateSymbol(IDBacktraceSymbol s)
        {
            var t = s.DType ?? TryGetDType(s);

            if (t == null)
            {
                return(null);
            }
            try
            {
                return(t.Accept(new DebugSymbolTypeEvalVisitor(this, s)));
            }
            catch (NotImplementedException)
            {
                return(null);
            }
        }
Пример #5
0
        ObjectValue CreateObjectValue(ISymbolValue v, IExpression originalExpression, ObjectPath pathOpt, EvaluationOptions evalOptions, IDBacktraceSymbol symbolOpt = null)
        {
            if (v != null)
            {
                try
                {
                    return(v.Accept(new ObjectValueSynthVisitor(this)
                    {
                        evalOptions = evalOptions, OriginalExpression = originalExpression, Path = pathOpt
                    }));
                }
                catch (NotImplementedException) { }
            }

            if (symbolOpt != null)
            {
                return(ObjectValue.CreatePrimitive(this, pathOpt, symbolOpt.TypeName, new Mono.Debugging.Backend.EvaluationResult(symbolOpt.Value), ObjectValueFlags.Variable));
            }

            return(ObjectValue.CreateError(this, pathOpt, "", "Couldn't evaluate expression " + (originalExpression != null ? originalExpression.ToString() : ""), ObjectValueFlags.Error));
        }
Пример #6
0
 public AbstractType TryGetDType(IDBacktraceSymbol s)
 {
     return(null);
 }
Пример #7
0
 public DebugSymbolTypeEvalVisitor(DLocalExamBacktrace b, IDBacktraceSymbol s)
 {
     this.Backtrace = b;
     this.Symbol    = s;
     Is64Bit        = (PointerSize = (uint)b.BacktraceHelper.PointerSize) == 8;
 }