Update perfview to use new CTF struct format

Updated perfview to use updated CTF struct format.  Removed "split
event" concept from perfview.
This commit is contained in:
Lee Culver
2016-05-31 17:54:23 -07:00
parent 6e0d04b2d5
commit 8136ec6d57
6 changed files with 79 additions and 145 deletions
+14
View File
@@ -271,6 +271,7 @@ namespace Microsoft.Diagnostics.Tracing.Ctf
const int SizeUninitialized = -2;
internal const int SizeIndeterminate = -1;
bool? _isPacked;
int _size = SizeUninitialized;
public bool IsFixedSize { get { return Size != SizeIndeterminate; } }
@@ -292,6 +293,19 @@ namespace Microsoft.Diagnostics.Tracing.Ctf
public int Stream { get; private set; }
public uint LogLevel { get; private set; }
public CtfStruct Fields { get; private set; }
public bool IsPacked
{
get
{
if (!_isPacked.HasValue)
{
var fields = Fields.Fields;
_isPacked = fields.Length == 3 && fields[2].Name == "___data__";
}
return _isPacked.Value;
}
}
public CtfEvent(CtfPropertyBag bag)
{
+30 -81
View File
@@ -182,106 +182,55 @@ namespace Microsoft.Diagnostics.Tracing.Ctf
if (!_readHeader)
throw new InvalidOperationException("Must read an event's header before reading an event's data.");
ResetBuffer();
object[] result = null;
if (evt.IsPacked)
{
ReadPackedEvent();
}
else
{
ResetBuffer();
result = ReadStruct(evt.Fields);
}
if (evt.Name == "DotNETRuntime:GCPerHeapHistory_V3_1")
PreFixupPerHeapHistory(evt);
object[] result = ReadStruct(evt.Fields);
_readHeader = false;
if (evt.Name == "DotNETRuntime:GCPerHeapHistory_V3_1")
PostFixupPerHeapHistory(evt);
return result;
}
internal void ReadEventIntoBuffer(CtfEvent evt)
{
if (!_readHeader)
throw new InvalidOperationException("Must read an event's header before reading an event's data.");
ResetBuffer();
if (evt.Name == "DotNETRuntime:GCPerHeapHistory_V3_1")
PreFixupPerHeapHistory(evt);
if (evt.IsFixedSize)
ReadBits(evt.Size);
if (evt.IsPacked)
{
ReadPackedEvent();
}
else
ReadStruct(evt.Fields);
{
ResetBuffer();
if (evt.IsFixedSize)
ReadBits(evt.Size);
else
ReadStruct(evt.Fields);
}
_readHeader = false;
if (evt.Name == "DotNETRuntime:GCPerHeapHistory_V3_1")
PostFixupPerHeapHistory(evt);
}
int _perHeapLenOffset = -1;
int _perHeapStructPointerOffset = -1;
private void PostFixupPerHeapHistory(CtfEvent evt)
private void ReadPackedEvent()
{
Debug.Assert(evt.Name == "DotNETRuntime:GCPerHeapHistory_V3_1");
Align(8);
int offset = ReadBits(32) / 8;
ReadBits(32);
Debug.Assert(_perHeapHistoryEvent.IsFixedSize);
int len = BitConverter.ToInt32(_buffer, offset);
int baseOffset = _perHeapHistoryEvent.Size / 8;
if (_perHeapLenOffset == -1)
{
int lenOffset = -1;
int ptrOffset = -1;
int offset = 0;
for (int i = 0; i < evt.Fields.Fields.Length; i++)
{
var field = evt.Fields.Fields[i];
if (field.Name.EndsWith("_Struct_Len_"))
{
Debug.Assert(lenOffset == -1);
lenOffset = offset;
}
else if (field.Name.EndsWith("_Struct_Pointer_"))
{
Debug.Assert(ptrOffset == -1);
ptrOffset = offset;
}
int tmp = field.Type.GetSize();
offset += tmp;
}
_perHeapLenOffset = lenOffset / 8;
_perHeapStructPointerOffset = ptrOffset / 8;
}
int start = _perHeapLenOffset;
int end = _perHeapStructPointerOffset;
int len = _bufferLength - end;
System.Buffer.BlockCopy(_buffer, baseOffset + end, _buffer, baseOffset + start, len);
_bufferLength -= end - start;
ResetBuffer();
ReadBits(8 * len);
}
private void PreFixupPerHeapHistory(CtfEvent evt)
{
Debug.Assert(evt.Name == "DotNETRuntime:GCPerHeapHistory_V3_1");
if (_perHeapHistoryEvent == null)
{
_perHeapHistoryEvent = _streamDefinition.Events.Where(e => e.Name == "DotNETRuntime:GCPerHeapHistory_V3").First();
Debug.Assert(_perHeapHistoryEvent.IsFixedSize);
}
Debug.Assert(_perHeapHistoryEvent.IsFixedSize);
int len = _perHeapHistoryEvent.Size / 8;
_bufferLength = len;
_bitOffset = len * 8;
for (int i = 0; i < len; i++)
_buffer[i] = 0;
}
public object[] ReadStruct(CtfStruct strct)
{
+6 -24
View File
@@ -446,33 +446,15 @@ namespace Microsoft.Diagnostics.Tracing
result["DotNETRuntimePrivate:Main_V1"] = new ETWMapping(new Guid("763fd754-7086-4dfe-95eb-c01a46faf4ca"), 136, 88, 1);
result["DotNETRuntimePrivate:MainEnd"] = new ETWMapping(new Guid("763fd754-7086-4dfe-95eb-c01a46faf4ca"), 137, 89, 0);
result["DotNETRuntimePrivate:MainEnd_V1"] = new ETWMapping(new Guid("763fd754-7086-4dfe-95eb-c01a46faf4ca"), 137, 89, 1);
// The following list are special case "split" events:
result["DotNETRuntime:GCJoin_V2"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 203, 203, 2);
result["DotNETRuntime:GCBulkSurvivingObjectRanges"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 25, 21, 0);
result["DotNETRuntime:GCPerHeapHistory_V3"] = new ETWMapping();
result["DotNETRuntime:GCPerHeapHistory_V3_1"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 204, 204, 3);
result["DotNETRuntime:GCHeapStats_V1"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 133, 4, TraceEvent.SplitEventVersion);
result["DotNETRuntime:GCHeapStats_V1_1"] = new ETWMapping();
result["DotNETRuntime:RuntimeInformationStart"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 1, 187, TraceEvent.SplitEventVersion);
result["DotNETRuntime:RuntimeInformationStart_1"] = new ETWMapping();
result["DotNETRuntime:ModuleLoad_V2"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 33, 152, TraceEvent.SplitEventVersion);
result["DotNETRuntime:ModuleLoad_V2_1"] = new ETWMapping();
result["DotNETRuntime:MethodJitInliningFailed"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 84, 186, TraceEvent.SplitEventVersion);
result["DotNETRuntime:MethodJitInliningFailed_1"] = new ETWMapping();
result["DotNETRuntime:MethodJitTailCallSucceeded"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 85, 188, TraceEvent.SplitEventVersion);
result["DotNETRuntime:MethodJitTailCallSucceeded_1"] = new ETWMapping();
result["DotNETRuntime:MethodJitTailCallFailed"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 86, 189, TraceEvent.SplitEventVersion);
result["DotNETRuntime:MethodJitTailCallFailed_1"] = new ETWMapping();
result["DotNETRuntime:GCHeapStats_V1"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 133, 4, 1);
result["DotNETRuntime:RuntimeInformationStart"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 1, 187, 0);
result["DotNETRuntime:ModuleLoad_V2"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 33, 152, 2);
result["DotNETRuntime:MethodJitInliningFailed"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 84, 186, 0);
result["DotNETRuntime:MethodJitTailCallSucceeded"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 85, 188, 0);
result["DotNETRuntime:MethodJitTailCallFailed"] = new ETWMapping(new Guid("47c3ba0c-77f1-4eb0-8d4d-aef447f16a85"), 86, 189, 0);
+27 -33
View File
@@ -2060,10 +2060,10 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
public long TotalPromotedSize3 { get { return GetInt64At(56); } }
public long FinalizationPromotedSize { get { return GetInt64At(64); } }
public long FinalizationPromotedCount { get { return GetInt64At(72); } }
public int PinnedObjectCount { get { if (Version != SplitEventVersion) return GetInt32At(80); return 0; } }
public int SinkBlockCount { get { if (Version != SplitEventVersion) return GetInt32At(84); return 0; } }
public int GCHandleCount { get { if (Version != SplitEventVersion) return GetInt32At(88); return 0; } }
public int ClrInstanceID { get { if (Version >= 1 && Version != SplitEventVersion) return GetInt16At(92); return 0; } }
public int PinnedObjectCount { get { return GetInt32At(80); } }
public int SinkBlockCount { get { return GetInt32At(84); } }
public int GCHandleCount { get { return GetInt32At(88); } }
public int ClrInstanceID { get { if (Version >= 1) return GetInt16At(92); return 0; } }
#region Private
internal GCHeapStatsTraceData(Action<GCHeapStatsTraceData> action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName)
@@ -2084,8 +2084,7 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
{
Debug.Assert(!(Version == 0 && EventDataLength != 96)); // HAND_MODIFIED C++ pads to 96
Debug.Assert(!(Version == 1 && EventDataLength != 94));
Debug.Assert(Version == SplitEventVersion || !(Version > 1 && EventDataLength < 94));
Debug.Assert(!(Version == SplitEventVersion && EventDataLength != 80));
Debug.Assert(!(Version > 1 && EventDataLength < 94));
}
public override StringBuilder ToXml(StringBuilder sb)
{
@@ -7673,13 +7672,13 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
public string ModuleILPath { get { return GetUnicodeStringAt(24); } }
public string ModuleNativePath { get { return GetUnicodeStringAt(SkipUnicodeString(24)); } }
public int ClrInstanceID { get { if (Version >= 1) return GetInt16At(SkipUnicodeString(SkipUnicodeString(24))); return 0; } }
public Guid ManagedPdbSignature { get { if (Version >= 2 && Version != TraceEvent.SplitEventVersion) return GetGuidAt(SkipUnicodeString(SkipUnicodeString(24)) + 2); return Guid.Empty; } }
public int ManagedPdbAge { get { if (Version >= 2 && Version != TraceEvent.SplitEventVersion) return GetInt32At(SkipUnicodeString(SkipUnicodeString(24)) + 18); return 0; } }
public string ManagedPdbBuildPath { get { if (Version >= 2 && Version != TraceEvent.SplitEventVersion) return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(24)) + 22); return ""; } }
public Guid ManagedPdbSignature { get { if (Version >= 2) return GetGuidAt(SkipUnicodeString(SkipUnicodeString(24)) + 2); return Guid.Empty; } }
public int ManagedPdbAge { get { if (Version >= 2) return GetInt32At(SkipUnicodeString(SkipUnicodeString(24)) + 18); return 0; } }
public string ManagedPdbBuildPath { get { if (Version >= 2) return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(24)) + 22); return ""; } }
public Guid NativePdbSignature { get { if (Version >= 2 && Version != TraceEvent.SplitEventVersion) return GetGuidAt(GetNativePdbSigStart); return Guid.Empty; } }
public int NativePdbAge { get { if (Version >= 2 && Version != TraceEvent.SplitEventVersion) return GetInt32At(GetNativePdbSigStart + 16); return 0; } }
public string NativePdbBuildPath { get { if (Version >= 2 && Version != TraceEvent.SplitEventVersion) return GetUnicodeStringAt(GetNativePdbSigStart + 20); return ""; } }
public Guid NativePdbSignature { get { if (Version >= 2) return GetGuidAt(GetNativePdbSigStart); return Guid.Empty; } }
public int NativePdbAge { get { if (Version >= 2) return GetInt32At(GetNativePdbSigStart + 16); return 0; } }
public string NativePdbBuildPath { get { if (Version >= 2) return GetUnicodeStringAt(GetNativePdbSigStart + 20); return ""; } }
/// <summary>
/// This is simply the file name part of the ModuleILPath. It is a convinience method.
@@ -7708,7 +7707,7 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
Debug.Assert(!(Version == 0 && EventDataLength != SkipUnicodeString(SkipUnicodeString(24))));
Debug.Assert(!(Version == 1 && EventDataLength != SkipUnicodeString(SkipUnicodeString(24)) + 2));
Debug.Assert(!(Version == 2 && EventDataLength != SkipUnicodeString(GetNativePdbSigStart + 20)));
Debug.Assert(Version == TraceEvent.SplitEventVersion || !(Version > 2 && EventDataLength < SkipUnicodeString(GetNativePdbSigStart + 20)));
Debug.Assert(!(Version > 2 && EventDataLength < SkipUnicodeString(GetNativePdbSigStart + 20)));
}
public override StringBuilder ToXml(StringBuilder sb)
{
@@ -8263,8 +8262,8 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
public string InlineeName { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))))))); } }
public string InlineeNameSignature { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))); } }
public bool FailAlways { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))))))))) != 0; } }
public string FailReason { get { if (Version != SplitEventVersion) return GetUTF8StringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4); return ""; } }
public int ClrInstanceID { get { if (Version != SplitEventVersion) return GetInt16At(SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4)); return 0; } }
public string FailReason { get { return GetUTF8StringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4); } }
public int ClrInstanceID { get { return GetInt16At(SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4)); } }
#region Private
internal MethodJitInliningFailedTraceData(Action<MethodJitInliningFailedTraceData> action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName)
@@ -8283,10 +8282,8 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
}
protected internal override void Validate()
{
int len = SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4;
Debug.Assert(!(Version == SplitEventVersion && EventDataLength != SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4));
Debug.Assert(!(Version == 0 && EventDataLength != SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4) + 2));
Debug.Assert(Version == SplitEventVersion || !(Version > 0 && EventDataLength < SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4) + 2));
Debug.Assert(!(Version > 0 && EventDataLength < SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4) + 2));
}
public override StringBuilder ToXml(StringBuilder sb)
{
@@ -8366,11 +8363,11 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
public int VMMinorVersion { get { return (ushort)GetInt16At(14); } }
public int VMBuildNumber { get { return (ushort)GetInt16At(16); } }
public int VMQfeNumber { get { return (ushort)GetInt16At(18); } }
public StartupFlags StartupFlags { get { if (Version != TraceEvent.SplitEventVersion) return (StartupFlags)GetInt32At(20); return StartupFlags.None; } }
public StartupMode StartupMode { get { if (Version != TraceEvent.SplitEventVersion) return (StartupMode)GetByteAt(24); return StartupMode.None; } }
public string CommandLine { get { if (Version != TraceEvent.SplitEventVersion) return GetUnicodeStringAt(25); return ""; } }
public Guid ComObjectGuid { get { if (Version != TraceEvent.SplitEventVersion) return GetGuidAt(SkipUnicodeString(25)); return Guid.Empty; } }
public string RuntimeDllPath { get { if (Version != TraceEvent.SplitEventVersion) return GetUnicodeStringAt(SkipUnicodeString(25) + 16); return ""; } }
public StartupFlags StartupFlags { get { return (StartupFlags)GetInt32At(20); } }
public StartupMode StartupMode { get { return (StartupMode)GetByteAt(24); } }
public string CommandLine { get { return GetUnicodeStringAt(25); } }
public Guid ComObjectGuid { get { return GetGuidAt(SkipUnicodeString(25)); } }
public string RuntimeDllPath { get { return GetUnicodeStringAt(SkipUnicodeString(25) + 16); } }
#region Private
internal RuntimeInformationTraceData(Action<RuntimeInformationTraceData> action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName)
@@ -8389,9 +8386,8 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
}
protected internal override void Validate()
{
Debug.Assert(!(Version == TraceEvent.SplitEventVersion && EventDataLength != 20));
Debug.Assert(!(Version == 0 && EventDataLength != SkipUnicodeString(SkipUnicodeString(25) + 16)));
Debug.Assert(Version == TraceEvent.SplitEventVersion || !(Version > 0 && EventDataLength < SkipUnicodeString(SkipUnicodeString(25) + 16)));
Debug.Assert(!(Version > 0 && EventDataLength < SkipUnicodeString(SkipUnicodeString(25) + 16)));
}
public override StringBuilder ToXml(StringBuilder sb)
{
@@ -8480,8 +8476,8 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
public string CalleeName { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))))))); } }
public string CalleeNameSignature { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))); } }
public bool TailPrefix { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))))))))) != 0; } }
public TailCallType TailCallType { get { if (Version != SplitEventVersion) return (TailCallType)GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4); return Clr.TailCallType.Unknown; } }
public int ClrInstanceID { get { if (Version != SplitEventVersion) return GetInt16At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 8); return 0; } }
public TailCallType TailCallType { get { return (TailCallType)GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4); } }
public int ClrInstanceID { get { return GetInt16At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 8); } }
#region Private
internal MethodJitTailCallSucceededTraceData(Action<MethodJitTailCallSucceededTraceData> action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName)
@@ -8501,8 +8497,7 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
protected internal override void Validate()
{
Debug.Assert(!(Version == 0 && EventDataLength != SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 10));
Debug.Assert(Version == SplitEventVersion || !(Version > 0 && EventDataLength < SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 10));
Debug.Assert(!(Version == SplitEventVersion && EventDataLength != SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4));
Debug.Assert(!(Version > 0 && EventDataLength < SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 10));
}
public override StringBuilder ToXml(StringBuilder sb)
{
@@ -8582,8 +8577,8 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
public string CalleeName { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))))))); } }
public string CalleeNameSignature { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))); } }
public bool TailPrefix { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))))))))) != 0; } }
public string FailReason { get { if (Version != SplitEventVersion) return GetUTF8StringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4); return ""; } }
public int ClrInstanceID { get { if (Version != SplitEventVersion) return GetInt16At(SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4)); return 0; } }
public string FailReason { get { return GetUTF8StringAt(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4); } }
public int ClrInstanceID { get { return GetInt16At(SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4)); } }
#region Private
internal MethodJitTailCallFailedTraceData(Action<MethodJitTailCallFailedTraceData> action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName)
@@ -8603,8 +8598,7 @@ namespace Microsoft.Diagnostics.Tracing.Parsers.Clr
protected internal override void Validate()
{
Debug.Assert(!(Version == 0 && EventDataLength != SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4) + 2));
Debug.Assert(Version == SplitEventVersion || !(Version > 0 && EventDataLength < SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4) + 2));
Debug.Assert(!(Version == SplitEventVersion && EventDataLength != SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4));
Debug.Assert(!(Version > 0 && EventDataLength < SkipUTF8String(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))))))))) + 4) + 2));
}
public override StringBuilder ToXml(StringBuilder sb)
{
-5
View File
@@ -1225,11 +1225,6 @@ namespace Microsoft.Diagnostics.Tracing
/// </summary>
public object EventTypeUserData;
/// <summary>
/// Version number for LTTng "split" events;
/// </summary>
public const int SplitEventVersion = 255;
#region Protected
/// <summary>
/// Create a template with the given event meta-data. Used by TraceParserGen.
+2 -2
View File
@@ -2587,7 +2587,7 @@ namespace Microsoft.Diagnostics.Tracing.Etlx
// Header sanity checks.
Debug.Assert(ptr->EventHeader.Level <= 6);
Debug.Assert(ptr->EventHeader.Version <= 10 || ptr->EventHeader.Version == TraceEvent.SplitEventVersion);
Debug.Assert(ptr->EventHeader.Version <= 10);
long eventTimeQPC = ptr->EventHeader.TimeStamp;
Debug.Assert(sessionStartTimeQPC <= eventTimeQPC && eventTimeQPC < DateTime.Now.Ticks || eventTimeQPC == long.MaxValue);
@@ -4159,7 +4159,7 @@ namespace Microsoft.Diagnostics.Tracing.Etlx
// Confirm we have a half-way sane event, to catch obvious loss of sync.
Debug.Assert(ret.Level <= (TraceEventLevel)64);
Debug.Assert(ret.Version <= 10 || ptr->EventHeader.Version == TraceEvent.SplitEventVersion);
Debug.Assert(ret.Version <= 10);
#if false // TODO FIX NOW remove or fix
// TODO 50000000 arbitrary. Fix underlying problem with merged ETL files.