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);
     }
 }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
 public void WriteDiagnosticInfo(TraceSource src, TraceEventType evtType, TraceEventID evtID, string format, params object[] args)
 {
     if (src != null)
         src.TraceEvent(evtType, (int)evtID, format, args);
 }
Example #7
0
 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);
     }
 }