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); }
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); }