void WriteToken(DmdMemberInfo member) { if (!Tokens) { return; } var primitiveFormatter = new VisualBasicPrimitiveValueFormatter(output, GetValueFormatterOptions() & ~ValueFormatterOptions.Decimal, cultureInfo); var tokenString = primitiveFormatter.ToFormattedUInt32((uint)member.MetadataToken); OutputWrite(CommentBegin + tokenString + CommentEnd, DbgTextColor.Comment); }
void WriteOffset() { if (!ShowIP) { return; } WriteSpace(); OutputWrite("(", DbgTextColor.Punctuation); OutputWrite("IL", DbgTextColor.Text); var primitiveFormatter = new VisualBasicPrimitiveValueFormatter(output, GetValueFormatterOptions() & ~ValueFormatterOptions.Decimal, cultureInfo); var loc = evalInfo.Frame.Location as IDbgDotNetCodeLocation; var ilOffsetMapping = loc?.ILOffsetMapping ?? DbgILOffsetMapping.Exact; switch (ilOffsetMapping) { case DbgILOffsetMapping.Prolog: OutputWrite("=", DbgTextColor.Operator); OutputWrite("prolog", DbgTextColor.Text); break; case DbgILOffsetMapping.Epilog: OutputWrite("=", DbgTextColor.Operator); OutputWrite("epilog", DbgTextColor.Text); break; case DbgILOffsetMapping.Exact: case DbgILOffsetMapping.Approximate: OutputWrite(ilOffsetMapping == DbgILOffsetMapping.Exact ? "=" : "≈", DbgTextColor.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("=", DbgTextColor.Operator); OutputWrite("???", DbgTextColor.Error); break; } if (!(loc is null)) { var addr = loc.NativeAddress; if (addr.Address != 0) { WriteCommaSpace(); OutputWrite("Native", DbgTextColor.Text); OutputWrite("=", DbgTextColor.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("-", DbgTextColor.Operator); } else { OutputWrite("+", DbgTextColor.Operator); } primitiveFormatter.FormatFewDigits((ulong)offs); } } OutputWrite(")", DbgTextColor.Punctuation); }