Esempio n. 1
0
        void WriteToken(DmdMemberInfo member)
        {
            if (!Tokens)
            {
                return;
            }
            var primitiveFormatter = new CSharpPrimitiveValueFormatter(output, GetValueFormatterOptions() & ~ValueFormatterOptions.Decimal, cultureInfo);
            var tokenString        = primitiveFormatter.ToFormattedUInt32((uint)member.MetadataToken);

            OutputWrite(CommentBegin + tokenString + CommentEnd, BoxedTextColor.Comment);
        }
Esempio n. 2
0
        void WriteOffset()
        {
            if (!ShowIP)
            {
                return;
            }
            WriteSpace();
            OutputWrite("(", BoxedTextColor.Punctuation);
            OutputWrite("IL", BoxedTextColor.Text);
            var primitiveFormatter = new CSharpPrimitiveValueFormatter(output, GetValueFormatterOptions() & ~ValueFormatterOptions.Decimal, cultureInfo);

            var loc             = evalInfo.Frame.Location as IDbgDotNetCodeLocation;
            var ilOffsetMapping = loc?.ILOffsetMapping ?? DbgILOffsetMapping.Exact;

            switch (ilOffsetMapping)
            {
            case DbgILOffsetMapping.Prolog:
                OutputWrite("=", BoxedTextColor.Operator);
                OutputWrite("prolog", BoxedTextColor.Text);
                break;

            case DbgILOffsetMapping.Epilog:
                OutputWrite("=", BoxedTextColor.Operator);
                OutputWrite("epilog", BoxedTextColor.Text);
                break;

            case DbgILOffsetMapping.Exact:
            case DbgILOffsetMapping.Approximate:
                OutputWrite(ilOffsetMapping == DbgILOffsetMapping.Exact ? "=" : "≈", BoxedTextColor.Operator);
                if (evalInfo.Frame.FunctionOffset <= ushort.MaxValue)
                {
                    primitiveFormatter.FormatUInt16((ushort)evalInfo.Frame.FunctionOffset);
                }
                else
                {
                    primitiveFormatter.FormatUInt32(evalInfo.Frame.FunctionOffset);
                }
                break;

            case DbgILOffsetMapping.Unknown:
            case DbgILOffsetMapping.NoInfo:
            case DbgILOffsetMapping.UnmappedAddress:
            default:
                OutputWrite("=", BoxedTextColor.Operator);
                OutputWrite("???", BoxedTextColor.Error);
                break;
            }

            if (loc != null)
            {
                var addr = loc.NativeAddress;
                if (addr.Address != 0)
                {
                    WriteCommaSpace();
                    OutputWrite("Native", BoxedTextColor.Text);
                    OutputWrite("=", BoxedTextColor.Operator);
                    if (evalInfo.Runtime.Process.PointerSize == 4)
                    {
                        primitiveFormatter.FormatUInt32((uint)addr.Address);
                    }
                    else
                    {
                        primitiveFormatter.FormatUInt64(addr.Address);
                    }
                    long offs = (long)addr.Offset;
                    if (offs < 0)
                    {
                        offs = -offs;
                        OutputWrite("-", BoxedTextColor.Operator);
                    }
                    else
                    {
                        OutputWrite("+", BoxedTextColor.Operator);
                    }
                    primitiveFormatter.FormatFewDigits((ulong)offs);
                }
            }
            OutputWrite(")", BoxedTextColor.Punctuation);
        }