public void WriteDiagnosticInfo(TraceSource src, TraceEventType evtType, TraceEventID evtID, string format, params object[] args) { if (src != null) { src.TraceEvent(evtType, (int)evtID, format, args); } }
public void WriteDiagnosticInfo(TraceSource src, TraceEventType evtType, TraceEventID evtID, string msg) { if (src != null) { src.TraceEvent(evtType, (int)evtID, msg); } }
public void WriteDiagnosticInfo(TraceEventType evtType, TraceEventID evtID, string message, params object[] args) { if (null != _wd) { _wd.WriteDiagnosticInfo(_ts, evtType, evtID, "tid:" + Thread.CurrentThread.ManagedThreadId.ToString() + " " + _class_method + ":" + message, args); } }
internal void OnClrPrivateEvent(TraceEvent data) { TraceEventID eventID = data.ID; HeapEvents heapEvent = HeapEvents.Unknown; // TODO don't use IDs but use individual callbacks. const TraceEventID GCDecisionEventID = (TraceEventID)1; const TraceEventID GCSettingsEventID = (TraceEventID)2; const TraceEventID GCOptimizedEventID = (TraceEventID)3; const TraceEventID GCPerHeapHistoryEventID = (TraceEventID)4; const TraceEventID GCGlobalHeapHistoryEventID = (TraceEventID)5; const TraceEventID GCJoinEventID = (TraceEventID)6; const TraceEventID GCMarkStackRootsEventID = (TraceEventID)7; const TraceEventID GCMarkFinalizeQueueRootsEventID = (TraceEventID)8; const TraceEventID GCMarkHandlesEventID = (TraceEventID)9; const TraceEventID GCMarkCardsEventID = (TraceEventID)10; const TraceEventID GCBGCStartEventID = (TraceEventID)11; const TraceEventID GCBGC1stNonCondStopEventID = (TraceEventID)12; const TraceEventID GCBGC1stConStopEventID = (TraceEventID)13; const TraceEventID GCBGC2ndNonConStartEventID = (TraceEventID)14; const TraceEventID GCBGC2ndNonConStopEventID = (TraceEventID)15; const TraceEventID GCBGC2ndConStartEventID = (TraceEventID)16; const TraceEventID GCBGC2ndConStopEventID = (TraceEventID)17; const TraceEventID GCBGCPlanStopEventID = (TraceEventID)18; const TraceEventID GCBGCSweepStopEventID = (TraceEventID)19; const TraceEventID GCBGCDrainMarkEventID = (TraceEventID)20; const TraceEventID GCBGCRevisitEventID = (TraceEventID)21; const TraceEventID GCBGCOverflowEventID = (TraceEventID)22; const TraceEventID GCBGCAllocWaitStartEventID = (TraceEventID)23; const TraceEventID GCBGCAllocWaitStopEventID = (TraceEventID)24; const TraceEventID GCFullNotifyEventID = (TraceEventID)25; switch (eventID) { case GCDecisionEventID: heapEvent = HeapEvents.GCDecision; break; case GCSettingsEventID: heapEvent = HeapEvents.GCSettings; break; case GCOptimizedEventID: heapEvent = HeapEvents.GCOptimized; { GCOptimizedTraceData mdata = data as GCOptimizedTraceData; if (mdata.GenerationNumber == 0) { m_g0Budget = mdata.DesiredAllocation; m_g0Alloc = mdata.NewAllocation; } else { m_g3Budget = mdata.DesiredAllocation; m_g3Alloc = mdata.NewAllocation; } } break; case GCPerHeapHistoryEventID: heapEvent = HeapEvents.GCPerHeapHistory; break; case GCGlobalHeapHistoryEventID: heapEvent = HeapEvents.GCGlobalHeapHistory; { GCGlobalHeapHistoryTraceData mdata = data as GCGlobalHeapHistoryTraceData; m_heapCount = mdata.NumHeaps; } break; case GCJoinEventID: heapEvent = HeapEvents.GCJoin; break; case GCMarkStackRootsEventID: heapEvent = HeapEvents.GCMarkStackRoots; break; case GCMarkFinalizeQueueRootsEventID: heapEvent = HeapEvents.GCMarkFinalizeQueueRoots; break; case GCMarkHandlesEventID: heapEvent = HeapEvents.GCMarkHandles; break; case GCMarkCardsEventID: heapEvent = HeapEvents.GCMarkCards; break; case GCBGCStartEventID: heapEvent = HeapEvents.BGCBegin; break; case GCBGC1stNonCondStopEventID: heapEvent = HeapEvents.BGC1stNonCondEnd; break; case GCBGC1stConStopEventID: heapEvent = HeapEvents.BGC1stConEnd; break; case GCBGC2ndNonConStartEventID: heapEvent = HeapEvents.BGC2ndNonConBegin; break; case GCBGC2ndNonConStopEventID: heapEvent = HeapEvents.BGC2ndNonConEnd; break; case GCBGC2ndConStartEventID: heapEvent = HeapEvents.BGC2ndConBegin; break; case GCBGC2ndConStopEventID: heapEvent = HeapEvents.BGC2ndConEnd; break; case GCBGCPlanStopEventID: heapEvent = HeapEvents.BGCPlanEnd; break; case GCBGCSweepStopEventID: heapEvent = HeapEvents.BGCSweepEnd; break; case GCBGCDrainMarkEventID: heapEvent = HeapEvents.BGCDrainMark; break; case GCBGCRevisitEventID: heapEvent = HeapEvents.BGCRevisit; break; case GCBGCOverflowEventID: heapEvent = HeapEvents.BGCOverflow; break; case GCBGCAllocWaitStartEventID: heapEvent = HeapEvents.BGCAllocWaitStart; break; case GCBGCAllocWaitStopEventID: heapEvent = HeapEvents.BGCAllocWaitStop; break; case GCFullNotifyEventID: heapEvent = HeapEvents.GCFullNotify; break; // FinalizeObject, // CCWRefCountChange, // SetGCHandle, // DestroyGCHandle, default: break; } if (heapEvent != HeapEvents.Unknown) { ThreadMemoryInfo thread = GetThread(data.ThreadID); thread.AddEvent(heapEvent, data.TimeStampRelativeMSec); } }
internal void OnClrEvent(TraceEvent data) { TraceEventID eventID = data.ID; HeapEvents heapEvent = HeapEvents.Unknown; // TODO don't use IDs but use individual callbacks. const TraceEventID GCStartEventID = (TraceEventID)1; const TraceEventID GCStopEventID = (TraceEventID)2; const TraceEventID GCRestartEEStopEventID = (TraceEventID)3; const TraceEventID GCHeapStatsEventID = (TraceEventID)4; const TraceEventID GCCreateSegmentEventID = (TraceEventID)5; const TraceEventID GCFreeSegmentEventID = (TraceEventID)6; const TraceEventID GCRestartEEStartEventID = (TraceEventID)7; const TraceEventID GCSuspendEEStopEventID = (TraceEventID)8; const TraceEventID GCSuspendEEStartEventID = (TraceEventID)9; const TraceEventID GCAllocationTickEventID = (TraceEventID)10; const TraceEventID GCCreateConcurrentThreadEventID = (TraceEventID)11; const TraceEventID GCTerminateConcurrentThreadEventID = (TraceEventID)12; const TraceEventID GCFinalizersStopEventID = (TraceEventID)13; const TraceEventID GCFinalizersStartEventID = (TraceEventID)14; const TraceEventID ContentionStartEventID = (TraceEventID)81; const TraceEventID ContentionStopEventID = (TraceEventID)91; switch (eventID) { case GCStartEventID: { var mdata = data as Microsoft.Diagnostics.Tracing.Parsers.Clr.GCStartTraceData; if (mdata != null) { GcEventExtra extra = GetGcEventExtra(mdata.Count); extra.GCStartIndex = data.EventIndex; extra.GCStartThread = data.Thread(); } } heapEvent = HeapEvents.GCStart; break; case GCStopEventID: heapEvent = HeapEvents.GCEnd; break; case GCRestartEEStartEventID: heapEvent = HeapEvents.GCRestartEEBegin; break; case GCRestartEEStopEventID: heapEvent = HeapEvents.GCRestartEEEnd; break; case GCHeapStatsEventID: heapEvent = HeapEvents.GCHeapStats; break; case GCCreateSegmentEventID: heapEvent = HeapEvents.GCCreateSegment; break; case GCFreeSegmentEventID: heapEvent = HeapEvents.GCFreeSegment; break; case GCSuspendEEStartEventID: heapEvent = HeapEvents.GCSuspendEEBegin; break; case GCSuspendEEStopEventID: heapEvent = HeapEvents.GCSuspendEEEnd; break; case GCAllocationTickEventID: heapEvent = HeapEvents.GCAllocationTick; { GCAllocationTickTraceData mdata = data as GCAllocationTickTraceData; AllocationTick(mdata, mdata.AllocationKind == GCAllocationKind.Large, mdata.GetAllocAmount(ref seenBadAlloc) / OneMBD); } break; case GCCreateConcurrentThreadEventID: heapEvent = HeapEvents.GCCreateConcurrentThread; break; case GCTerminateConcurrentThreadEventID: heapEvent = HeapEvents.GCTerminateConcurrentThread; break; case GCFinalizersStartEventID: heapEvent = HeapEvents.GCFinalizersBegin; break; case GCFinalizersStopEventID: heapEvent = HeapEvents.GCFinalizersEnd; break; case ContentionStartEventID: heapEvent = HeapEvents.ContentionStart; break; case ContentionStopEventID: heapEvent = HeapEvents.ContentionStop; break; default: break; } if (heapEvent != HeapEvents.Unknown) { ThreadMemoryInfo thread = GetThread(data.ThreadID); thread.AddEvent(heapEvent, data.TimeStampRelativeMSec); } }
public void WriteDiagnosticInfo(TraceSource src, TraceEventType evtType, TraceEventID evtID, string format, params object[] args) { if (src != null) src.TraceEvent(evtType, (int)evtID, format, args); }
public void WriteDiagnosticInfo(TraceSource src, TraceEventType evtType, TraceEventID evtID, string msg) { if (src != null) src.TraceEvent(evtType, (int)evtID, msg); }