internal void WriteProcessName(IDbgTextWriter output, DbgModuleBreakpoint bp) => output.Write(DbgTextColor.String, bp.ProcessName ?? string.Empty);
public override void FormatArrayName(IDbgTextWriter output, int index) { output.Write(DbgTextColor.Punctuation, ARRAY_PAREN_OPEN); output.Write(DbgTextColor.Number, index.ToString()); output.Write(DbgTextColor.Punctuation, ARRAY_PAREN_CLOSE); }
public DebuggerDisplayAttributeFormatter(DbgEvaluationInfo evalInfo, LanguageFormatter languageFormatter, IDbgTextWriter output, DbgValueFormatterOptions options, CultureInfo?cultureInfo) { Debug.Assert((options & DbgValueFormatterOptions.NoDebuggerDisplay) == 0); this.evalInfo = evalInfo; this.languageFormatter = languageFormatter; this.output = output; this.options = options; this.cultureInfo = cultureInfo; }
void WriteToken(IDbgTextWriter output, uint token) => output.Write(DbgTextColor.Number, GetHexPrefix() + token.ToString("X8"));
protected override void FormatReturnValueMethodName(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgValueFormatterTypeOptions typeOptions, DbgValueFormatterOptions valueOptions, CultureInfo cultureInfo, DmdMethodBase method, DmdPropertyInfo property) { var typeFormatter = new Formatters.VisualBasic.VisualBasicTypeFormatter(output, typeOptions.ToTypeFormatterOptions(), null); typeFormatter.Format(method.DeclaringType, null); var valueFormatter = new Formatters.VisualBasic.VisualBasicPrimitiveValueFormatter(output, valueOptions.ToValueFormatterOptions(), cultureInfo); output.Write(DbgTextColor.Operator, "."); if ((object)property != null) { output.Write(MemberUtils.GetColor(property), Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(property.Name)); valueFormatter.WriteTokenComment(property.MetadataToken); output.Write(DbgTextColor.Operator, "."); output.Write(DbgTextColor.Keyword, "Get"); valueFormatter.WriteTokenComment(method.MetadataToken); } else { var operatorInfo = Formatters.VisualBasic.Operators.TryGetOperatorInfo(method.Name); if (operatorInfo != null && method is DmdMethodInfo methodInfo) { for (int i = 0; i < operatorInfo.Length; i++) { if (i > 0) { output.Write(DbgTextColor.Text, " "); } var s = operatorInfo[i]; output.Write('A' <= s[0] && s[0] <= 'Z' ? DbgTextColor.Keyword : DbgTextColor.Operator, s); } WriteGenericMethodArguments(output, method, typeFormatter); } else { output.Write(TypeFormatterUtils.GetColor(method, canBeModule: true), Formatters.VisualBasic.VisualBasicTypeFormatter.GetFormattedIdentifier(method.Name)); valueFormatter.WriteTokenComment(method.MetadataToken); WriteGenericMethodArguments(output, method, typeFormatter); } } }
public void WriteName(IDbgTextWriter output, ValueNode vm) => vm.CachedName.WriteTo(output);
public void WriteValue(IDbgTextWriter output, ValueNode vm, out bool textChanged) { vm.CachedValue.WriteTo(output); textChanged = !vm.OldCachedValue.IsDefault && !vm.OldCachedValue.Equals(vm.CachedValue); }
public abstract void FormatArrayName(IDbgTextWriter output, int[] indexes);
internal void FormatTypeName2(IDbgTextWriter output, DmdType type) => FormatTypeName(output, type);
protected abstract void FormatFieldName(IDbgTextWriter output, DmdFieldInfo field);
protected abstract void FormatPropertyName(IDbgTextWriter output, DmdPropertyInfo property);
protected abstract void FormatTypeName(IDbgTextWriter output, DmdType type);
public virtual bool FormatActualType(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgDotNetFormatter formatter, DbgValueFormatterTypeOptions options, DbgValueFormatterOptions valueOptions, CultureInfo cultureInfo) => false;
internal void WriteAppDomainName(IDbgTextWriter output, DbgModuleBreakpoint bp) => output.Write(DbgTextColor.String, bp.AppDomainName ?? string.Empty);
public override void FormatValue(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgDotNetValue value, DbgValueFormatterOptions options, CultureInfo cultureInfo) => new CSharpValueFormatter(output, evalInfo, this, options.ToValueFormatterOptions(), cultureInfo).Format(value);
public override void FormatStowedExceptionName(DbgEvaluationContext context, IDbgTextWriter output, uint id) => output.Write(DbgTextColor.StowedExceptionName, AliasConstants.StowedExceptionName);
public override void FormatFrame(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgStackFrameFormatterOptions options, DbgValueFormatterOptions valueOptions, CultureInfo cultureInfo) => new CSharpStackFrameFormatter(output, evalInfo, this, options, valueOptions.ToValueFormatterOptions(), cultureInfo).Format();
public override void FormatObjectIdName(DbgEvaluationContext context, IDbgTextWriter output, uint id) => output.Write(DbgTextColor.ObjectIdName, AliasConstants.ObjectIdName + id.ToString());
public void WriteValueAndObjectId(IDbgTextWriter output, ValueNode vm, out bool textChanged) { WriteValue(output, vm, out textChanged); WriteObjectId(output, vm); }
void WriteError(IDbgTextWriter output) => output.Write(DbgTextColor.Error, "???");
public override void WriteModule(IDbgTextWriter output) => new DbgTextColorWriter(output).WriteFilename(location.Module.ModuleName);
public abstract void WriteName(IDbgTextWriter writer, DbgExceptionDefinition definition, bool includeDescription);
public override void WriteName(IDbgTextWriter output, DbgBreakpointLocationFormatterOptions options) { bool printedToken = false; if ((options & DbgBreakpointLocationFormatterOptions.Tokens) != 0) { WriteToken(output, location.Token); output.Write(DbgTextColor.Text, " "); printedToken = true; } var method = weakMethod?.Target as MethodDef ?? owner.GetDefinition <MethodDef>(location.Module, location.Token); if (method == null) { if (printedToken) { output.Write(DbgTextColor.Error, "???"); } else { WriteToken(output, location.Token); } } else { if (weakMethod?.Target != method) { weakMethod = new WeakReference(method); } owner.MethodDecompiler.Write(new DbgTextColorWriter(output), method, GetFormatterOptions(options)); } switch (location.ILOffsetMapping) { case DbgILOffsetMapping.Exact: case DbgILOffsetMapping.Approximate: output.Write(DbgTextColor.Text, " "); output.Write(DbgTextColor.Operator, "+"); output.Write(DbgTextColor.Text, " "); if (location.ILOffsetMapping == DbgILOffsetMapping.Approximate) { output.Write(DbgTextColor.Operator, "~"); } WriteILOffset(output, location.Offset); break; case DbgILOffsetMapping.Prolog: WriteText(output, "prolog"); break; case DbgILOffsetMapping.Epilog: WriteText(output, "epilog"); break; case DbgILOffsetMapping.Unknown: case DbgILOffsetMapping.NoInfo: case DbgILOffsetMapping.UnmappedAddress: WriteText(output, "???"); break; default: Debug.Fail($"Unknown IL offset mapping: {location.ILOffsetMapping}"); goto case DbgILOffsetMapping.Unknown; } output.Write(DbgTextColor.Text, " "); output.Write(DbgTextColor.Punctuation, "("); output.Write(DbgTextColor.Number, GetHexPrefix() + location.NativeAddress.Address.ToString("X8")); output.Write(DbgTextColor.Operator, "+"); output.Write(DbgTextColor.Number, (options & DbgBreakpointLocationFormatterOptions.Decimal) != 0 ? location.NativeAddress.Offset.ToString() : GetHexPrefix() + location.NativeAddress.Offset.ToString("X")); output.Write(DbgTextColor.Punctuation, ")"); }
public abstract void WriteName(IDbgTextWriter writer, DbgExceptionId id, bool includeDescription);
protected override void FormatTypeName(IDbgTextWriter output, DmdType type) { const Formatters.TypeFormatterOptions options = Formatters.TypeFormatterOptions.IntrinsicTypeKeywords | Formatters.TypeFormatterOptions.Namespaces; new Formatters.CSharp.CSharpTypeFormatter(output, options, null).Format(type, null); }
protected override void FormatReturnValueMethodName(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgValueFormatterTypeOptions typeOptions, DbgValueFormatterOptions valueOptions, CultureInfo?cultureInfo, DmdMethodBase method, DmdPropertyInfo?property) { var typeFormatter = new Formatters.CSharp.CSharpTypeFormatter(output, typeOptions.ToTypeFormatterOptions(), null); typeFormatter.Format(method.DeclaringType !, null); var valueFormatter = new Formatters.CSharp.CSharpPrimitiveValueFormatter(output, valueOptions.ToValueFormatterOptions(), cultureInfo); output.Write(DbgTextColor.Operator, "."); if (!(property is null)) { if (property.GetIndexParameters().Count != 0) { output.Write(DbgTextColor.Keyword, Keyword_this); WriteMethodParameterList(output, method, typeFormatter, GetAllMethodParameterTypes(property.GetMethodSignature()), IndexerParenOpen, IndexerParenClose); } else { output.Write(MemberUtils.GetColor(property), Formatters.CSharp.CSharpTypeFormatter.GetFormattedIdentifier(property.Name)); } valueFormatter.WriteTokenComment(property.MetadataToken); output.Write(DbgTextColor.Operator, "."); output.Write(DbgTextColor.Keyword, "get"); valueFormatter.WriteTokenComment(method.MetadataToken); }
public abstract void Write(IDbgTextWriter output, string expr);
public override void FormatType(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DmdType type, DbgDotNetValue value, DbgValueFormatterTypeOptions options, CultureInfo cultureInfo) => new CSharpTypeFormatter(output, options.ToTypeFormatterOptions(), cultureInfo).Format(type, value);
public override bool FormatActualType(DbgEvaluationInfo evalInfo, IDbgTextWriter output, DbgDotNetFormatter formatter, DbgValueFormatterTypeOptions options, DbgValueFormatterOptions valueOptions, CultureInfo?cultureInfo) => columnFormatter?.FormatActualType(evalInfo, output, formatter, options, valueOptions, cultureInfo) ?? FormatDebuggerDisplayAttributeType(evalInfo, output, formatter, valueOptions, cultureInfo);
internal void WriteOrder(IDbgTextWriter output, DbgModuleBreakpoint bp) => WriteInt32Decimal(output, bp.Order);