diff --git a/server/TracyEventDebug.cpp b/server/TracyEventDebug.cpp new file mode 100644 index 00000000..bb83232a --- /dev/null +++ b/server/TracyEventDebug.cpp @@ -0,0 +1,346 @@ +#include +#include +#include + +#include "TracyEventDebug.hpp" +#include "../common/TracyQueue.hpp" + +namespace tracy +{ + +void EventDebug( const QueueItem& ev ) +{ + static FILE* f = fopen( "eventdebug.txt", "wb" ); + switch( ev.hdr.type ) + { + case QueueType::ZoneText: + fprintf( f, "ev %i (ZoneText)\n", ev.hdr.idx ); + break; + case QueueType::ZoneName: + fprintf( f, "ev %i (ZoneName)\n", ev.hdr.idx ); + break; + case QueueType::Message: + fprintf( f, "ev %i (Message)\n", ev.hdr.idx ); + break; + case QueueType::MessageColor: + fprintf( f, "ev %i (MessageColor)\n", ev.hdr.idx ); + break; + case QueueType::MessageCallstack: + fprintf( f, "ev %i (MessageCallstack)\n", ev.hdr.idx ); + break; + case QueueType::MessageColorCallstack: + fprintf( f, "ev %i (MessageColorCallstack)\n", ev.hdr.idx ); + break; + case QueueType::MessageAppInfo: + fprintf( f, "ev %i (MessageAppInfo)\n", ev.hdr.idx ); + break; + case QueueType::ZoneBeginAllocSrcLoc: + fprintf( f, "ev %i (ZoneBeginAllocSrcLoc)\n", ev.hdr.idx ); + break; + case QueueType::ZoneBeginAllocSrcLocCallstack: + fprintf( f, "ev %i (ZoneBeginAllocSrcLocCallstack)\n", ev.hdr.idx ); + break; + case QueueType::CallstackSerial: + fprintf( f, "ev %i (CallstackSerial)\n", ev.hdr.idx ); + break; + case QueueType::Callstack: + fprintf( f, "ev %i (Callstack)\n", ev.hdr.idx ); + break; + case QueueType::CallstackAlloc: + fprintf( f, "ev %i (CallstackAlloc)\n", ev.hdr.idx ); + break; + case QueueType::CallstackSample: + fprintf( f, "ev %i (CallstackSample)\n", ev.hdr.idx ); + break; + case QueueType::FrameImage: + fprintf( f, "ev %i (FrameImage)\n", ev.hdr.idx ); + break; + case QueueType::ZoneBegin: + fprintf( f, "ev %i (ZoneBegin)\n", ev.hdr.idx ); + fprintf( f, "\ttime = %" PRIi64 "\n", ev.zoneBeginLean.time ); + break; + case QueueType::ZoneBeginCallstack: + fprintf( f, "ev %i (ZoneBeginCallstack)\n", ev.hdr.idx ); + break; + case QueueType::ZoneEnd: + fprintf( f, "ev %i (ZoneEnd)\n", ev.hdr.idx ); + fprintf( f, "\ttime = %" PRIi64 "\n", ev.zoneEnd.time ); + break; + case QueueType::LockWait: + fprintf( f, "ev %i (LockWait)\n", ev.hdr.idx ); + break; + case QueueType::LockObtain: + fprintf( f, "ev %i (LockObtain)\n", ev.hdr.idx ); + break; + case QueueType::LockRelease: + fprintf( f, "ev %i (LockRelease)\n", ev.hdr.idx ); + break; + case QueueType::LockSharedWait: + fprintf( f, "ev %i (LockSharedWait)\n", ev.hdr.idx ); + break; + case QueueType::LockSharedObtain: + fprintf( f, "ev %i (LockSharedObtain)\n", ev.hdr.idx ); + break; + case QueueType::LockSharedRelease: + fprintf( f, "ev %i (LockSharedRelease)\n", ev.hdr.idx ); + break; + case QueueType::LockName: + fprintf( f, "ev %i (LockName)\n", ev.hdr.idx ); + break; + case QueueType::MemAlloc: + fprintf( f, "ev %i (MemAlloc)\n", ev.hdr.idx ); + break; + case QueueType::MemAllocNamed: + fprintf( f, "ev %i (MemAllocNamed)\n", ev.hdr.idx ); + break; + case QueueType::MemFree: + fprintf( f, "ev %i (MemFree)\n", ev.hdr.idx ); + break; + case QueueType::MemFreeNamed: + fprintf( f, "ev %i (MemFreeNamed)\n", ev.hdr.idx ); + break; + case QueueType::MemAllocCallstack: + fprintf( f, "ev %i (MemAllocCallstack)\n", ev.hdr.idx ); + break; + case QueueType::MemAllocCallstackNamed: + fprintf( f, "ev %i (MemAllocCallstackNamed)\n", ev.hdr.idx ); + break; + case QueueType::MemFreeCallstack: + fprintf( f, "ev %i (MemFreeCallstack)\n", ev.hdr.idx ); + break; + case QueueType::MemFreeCallstackNamed: + fprintf( f, "ev %i (MemFreeCallstackNamed)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBegin: + fprintf( f, "ev %i (GpuZoneBegin)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginCallstack: + fprintf( f, "ev %i (GpuZoneBeginCallstack)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginAllocSrcLoc: + fprintf( f, "ev %i (GpuZoneBeginAllocSrcLoc)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginAllocSrcLocCallstack: + fprintf( f, "ev %i (GpuZoneBeginAllocSrcLocCallstack)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneEnd: + fprintf( f, "ev %i (GpuZoneEnd)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginSerial: + fprintf( f, "ev %i (GpuZoneBeginSerial)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginCallstackSerial: + fprintf( f, "ev %i (GpuZoneBeginCallstackSerial)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginAllocSrcLocSerial: + fprintf( f, "ev %i (GpuZoneBeginAllocSrcLocSerial)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneBeginAllocSrcLocCallstackSerial: + fprintf( f, "ev %i (GpuZoneBeginAllocSrcLocCallstackSerial)\n", ev.hdr.idx ); + break; + case QueueType::GpuZoneEndSerial: + fprintf( f, "ev %i (GpuZoneEndSerial)\n", ev.hdr.idx ); + break; + case QueueType::PlotData: + fprintf( f, "ev %i (PlotData)\n", ev.hdr.idx ); + break; + case QueueType::ContextSwitch: + fprintf( f, "ev %i (ContextSwitch)\n", ev.hdr.idx ); + break; + case QueueType::ThreadWakeup: + fprintf( f, "ev %i (ThreadWakeup)\n", ev.hdr.idx ); + break; + case QueueType::GpuTime: + fprintf( f, "ev %i (GpuTime)\n", ev.hdr.idx ); + break; + case QueueType::GpuContextName: + fprintf( f, "ev %i (GpuContextName)\n", ev.hdr.idx ); + break; + case QueueType::CallstackFrameSize: + fprintf( f, "ev %i (CallstackFrameSize)\n", ev.hdr.idx ); + break; + case QueueType::SymbolInformation: + fprintf( f, "ev %i (SymbolInformation)\n", ev.hdr.idx ); + break; + case QueueType::CodeInformation: + fprintf( f, "ev %i (CodeInformation)\n", ev.hdr.idx ); + break; + case QueueType::FiberEnter: + fprintf( f, "ev %i (FiberEnter)\n", ev.hdr.idx ); + fprintf( f, "\ttime = %" PRIi64 "\n", ev.fiberEnter.time ); + fprintf( f, "\tfiber = %" PRIu64 "\n", ev.fiberEnter.fiber ); + fprintf( f, "\tthread = %" PRIu32 "\n", ev.fiberEnter.thread ); + break; + case QueueType::FiberLeave: + fprintf( f, "ev %i (FiberLeave)\n", ev.hdr.idx ); + fprintf( f, "\ttime = %" PRIi64 "\n", ev.fiberLeave.time ); + fprintf( f, "\tthread = %" PRIu32 "\n", ev.fiberLeave.thread ); + break; + case QueueType::Terminate: + fprintf( f, "ev %i (Terminate)\n", ev.hdr.idx ); + break; + case QueueType::KeepAlive: + fprintf( f, "ev %i (KeepAlive)\n", ev.hdr.idx ); + break; + case QueueType::ThreadContext: + fprintf( f, "ev %i (ThreadContext)\n", ev.hdr.idx ); + fprintf( f, "\tthread = %" PRIu32 "\n", ev.threadCtx.thread ); + break; + case QueueType::GpuCalibration: + fprintf( f, "ev %i (GpuCalibration)\n", ev.hdr.idx ); + break; + case QueueType::Crash: + fprintf( f, "ev %i (Crash)\n", ev.hdr.idx ); + break; + case QueueType::CrashReport: + fprintf( f, "ev %i (CrashReport)\n", ev.hdr.idx ); + break; + case QueueType::ZoneValidation: + fprintf( f, "ev %i (ZoneValidation)\n", ev.hdr.idx ); + fprintf( f, "\tid = %" PRIu32 "\n", ev.zoneValidation.id ); + break; + case QueueType::ZoneColor: + fprintf( f, "ev %i (ZoneColor)\n", ev.hdr.idx ); + break; + case QueueType::ZoneValue: + fprintf( f, "ev %i (ZoneValue)\n", ev.hdr.idx ); + break; + case QueueType::FrameMarkMsg: + fprintf( f, "ev %i (FrameMarkMsg)\n", ev.hdr.idx ); + break; + case QueueType::FrameMarkMsgStart: + fprintf( f, "ev %i (FrameMarkMsgStart)\n", ev.hdr.idx ); + break; + case QueueType::FrameMarkMsgEnd: + fprintf( f, "ev %i (FrameMarkMsgEnd)\n", ev.hdr.idx ); + break; + case QueueType::SourceLocation: + fprintf( f, "ev %i (SourceLocation)\n", ev.hdr.idx ); + break; + case QueueType::LockAnnounce: + fprintf( f, "ev %i (LockAnnounce)\n", ev.hdr.idx ); + break; + case QueueType::LockTerminate: + fprintf( f, "ev %i (LockTerminate)\n", ev.hdr.idx ); + break; + case QueueType::LockMark: + fprintf( f, "ev %i (LockMark)\n", ev.hdr.idx ); + break; + case QueueType::MessageLiteral: + fprintf( f, "ev %i (MessageLiteral)\n", ev.hdr.idx ); + break; + case QueueType::MessageLiteralColor: + fprintf( f, "ev %i (MessageLiteralColor)\n", ev.hdr.idx ); + break; + case QueueType::MessageLiteralCallstack: + fprintf( f, "ev %i (MessageLiteralCallstack)\n", ev.hdr.idx ); + break; + case QueueType::MessageLiteralColorCallstack: + fprintf( f, "ev %i (MessageLiteralColorCallstack)\n", ev.hdr.idx ); + break; + case QueueType::GpuNewContext: + fprintf( f, "ev %i (GpuNewContext)\n", ev.hdr.idx ); + break; + case QueueType::CallstackFrame: + fprintf( f, "ev %i (CallstackFrame)\n", ev.hdr.idx ); + break; + case QueueType::SysTimeReport: + fprintf( f, "ev %i (SysTimeReport)\n", ev.hdr.idx ); + fprintf( f, "\ttime = %" PRIi64 "\n", ev.sysTime.time ); + fprintf( f, "\tsysTime = %f\n", ev.sysTime.sysTime ); + break; + case QueueType::TidToPid: + fprintf( f, "ev %i (TidToPid)\n", ev.hdr.idx ); + break; + case QueueType::HwSampleCpuCycle: + fprintf( f, "ev %i (HwSampleCpuCycle)\n", ev.hdr.idx ); + break; + case QueueType::HwSampleInstructionRetired: + fprintf( f, "ev %i (HwSampleInstructionRetired)\n", ev.hdr.idx ); + break; + case QueueType::HwSampleCacheReference: + fprintf( f, "ev %i (HwSampleCacheReference)\n", ev.hdr.idx ); + break; + case QueueType::HwSampleCacheMiss: + fprintf( f, "ev %i (HwSampleCacheMiss)\n", ev.hdr.idx ); + break; + case QueueType::HwSampleBranchRetired: + fprintf( f, "ev %i (HwSampleBranchRetired)\n", ev.hdr.idx ); + break; + case QueueType::HwSampleBranchMiss: + fprintf( f, "ev %i (HwSampleBranchMiss)\n", ev.hdr.idx ); + break; + case QueueType::PlotConfig: + fprintf( f, "ev %i (PlotConfig)\n", ev.hdr.idx ); + break; + case QueueType::ParamSetup: + fprintf( f, "ev %i (ParamSetup)\n", ev.hdr.idx ); + break; + case QueueType::AckServerQueryNoop: + fprintf( f, "ev %i (AckServerQueryNoop)\n", ev.hdr.idx ); + break; + case QueueType::AckSourceCodeNotAvailable: + fprintf( f, "ev %i (AckSourceCodeNotAvailable)\n", ev.hdr.idx ); + break; + case QueueType::CpuTopology: + fprintf( f, "ev %i (CpuTopology)\n", ev.hdr.idx ); + fprintf( f, "\tpackage = %" PRIu32 "\n", ev.cpuTopology.package ); + fprintf( f, "\tcore = %" PRIu32 "\n", ev.cpuTopology.core ); + fprintf( f, "\tthread = %" PRIu32 "\n", ev.cpuTopology.thread ); + break; + case QueueType::SingleStringData: + fprintf( f, "ev %i (SingleStringData)\n", ev.hdr.idx ); + break; + case QueueType::SecondStringData: + fprintf( f, "ev %i (SecondStringData)\n", ev.hdr.idx ); + break; + case QueueType::MemNamePayload: + fprintf( f, "ev %i (MemNamePayload)\n", ev.hdr.idx ); + break; + case QueueType::StringData: + fprintf( f, "ev %i (StringData)\n", ev.hdr.idx ); + break; + case QueueType::ThreadName: + fprintf( f, "ev %i (ThreadName)\n", ev.hdr.idx ); + break; + case QueueType::PlotName: + fprintf( f, "ev %i (PlotName)\n", ev.hdr.idx ); + break; + case QueueType::SourceLocationPayload: + fprintf( f, "ev %i (SourceLocationPayload)\n", ev.hdr.idx ); + break; + case QueueType::CallstackPayload: + fprintf( f, "ev %i (CallstackPayload)\n", ev.hdr.idx ); + break; + case QueueType::CallstackAllocPayload: + fprintf( f, "ev %i (CallstackAllocPayload)\n", ev.hdr.idx ); + break; + case QueueType::FrameName: + fprintf( f, "ev %i (FrameName)\n", ev.hdr.idx ); + break; + case QueueType::FrameImageData: + fprintf( f, "ev %i (FrameImageData)\n", ev.hdr.idx ); + break; + case QueueType::ExternalName: + fprintf( f, "ev %i (ExternalName)\n", ev.hdr.idx ); + break; + case QueueType::ExternalThreadName: + fprintf( f, "ev %i (ExternalThreadName)\n", ev.hdr.idx ); + break; + case QueueType::SymbolCode: + fprintf( f, "ev %i (SymbolCode)\n", ev.hdr.idx ); + break; + case QueueType::SourceCode: + fprintf( f, "ev %i (SourceCode)\n", ev.hdr.idx ); + break; + case QueueType::FiberName: + fprintf( f, "ev %i (FiberName)\n", ev.hdr.idx ); + break; + default: + assert( false ); + break; + } + fflush( f ); +} + +} diff --git a/server/TracyEventDebug.hpp b/server/TracyEventDebug.hpp new file mode 100644 index 00000000..00123e0c --- /dev/null +++ b/server/TracyEventDebug.hpp @@ -0,0 +1,10 @@ +#ifndef __TRACYEVENTDEBUG_HPP__ +#define __TRACYEVENTDEBUG_HPP__ + +namespace tracy +{ +struct QueueItem; +void EventDebug( const QueueItem& ev ); +} + +#endif