tracy/server/TracyEventDebug.cpp

359 lines
13 KiB
C++
Raw Normal View History

2021-11-04 21:30:16 +00:00
#include <assert.h>
#include <stdio.h>
#include <inttypes.h>
#include "TracyEventDebug.hpp"
#include "../public/common/TracyQueue.hpp"
2021-11-04 21:30:16 +00:00
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::CallstackSampleContextSwitch:
fprintf( f, "ev %i (CallstackSampleContextSwitch)\n", ev.hdr.idx );
break;
2021-11-04 21:30:16 +00:00
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::PlotDataInt:
fprintf( f, "ev %i (PlotDataInt)\n", ev.hdr.idx );
break;
case QueueType::PlotDataFloat:
fprintf( f, "ev %i (PlotDataFloat)\n", ev.hdr.idx );
break;
case QueueType::PlotDataDouble:
fprintf( f, "ev %i (PlotDataDouble)\n", ev.hdr.idx );
2021-11-04 21:30:16 +00:00
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::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::GpuTimeSync:
fprintf( f, "ev %i (GpuTimeSync)\n", ev.hdr.idx );
break;
2021-11-04 21:30:16 +00:00
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::AckSymbolCodeNotAvailable:
fprintf( f, "ev %i (AckSymbolCodeNotAvailable)\n", ev.hdr.idx );
break;
2021-11-04 21:30:16 +00:00
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 );
}
}