Я следовал инструкциям на https://docs.microsoft.com/en-us/windows/apps/trace-processing/extensibility, чтобы получить в свои руки. NET События времени выполнения. Когда я получаю экземпляр EventContext с неразобранными данными, у меня нет удобного способа дальнейшего анализа?
В идеале должен быть генератор парсера для событий, основанных на манифесте, как в случае с TraceEvent. Что-то вроде
TraceProcessorGen -generateEvents c:\Windows\Microsoft.NET\Framework\v4.0.30319\CLR-ETW.man
очень помогло бы. Я не склонен писать код синтаксического анализа вручную с сотнями жестко закодированных смещений для десятков событий.
class ClrDataSource : IFilteredEventConsumer
{
public IReadOnlyList<Guid> ProviderIds { get; } = new Guid[] { new Guid("e13c0d23-ccbc-4e12-931b-d9cc2eee27e4") };
public int Count { get; private set; }
public void Process(EventContext eventContext)
{
ReadOnlySpan<byte> data = eventContext.Event.Data;
// What do do next?
}
}
TraceEvent от Вэнса Моррисона имеет простой способ исследовать события, основанные на манифесте, где Payload и PayloadNames уже подготовлены на основе их манифеста. Это не очень эффективно, но для многих случаев и исследовательских исследований очень полезно.