mirror of
https://github.com/wolfpld/tracy.git
synced 2026-01-18 17:11:26 +01:00
TracyDebug now uses TracyInternalMessage by default unless TRACY_VERBOSE or TRACY_NO_INTERNAL_MESSAGE is defined
This commit is contained in:
@@ -146,6 +146,8 @@ set_option(TRACY_IGNORE_MEMORY_FAULTS "Ignore instrumentation errors from memory
|
||||
# advanced
|
||||
set_option(TRACY_VERBOSE "[advanced] Verbose output from the profiler" OFF)
|
||||
mark_as_advanced(TRACY_VERBOSE)
|
||||
set_option(TRACY_NO_INTERNAL_MESSAGE "[advanced] Prevent the profiler from logging messages" OFF)
|
||||
mark_as_advanced(TRACY_NO_INTERNAL_MESSAGE)
|
||||
set_option(TRACY_DEMANGLE "[advanced] Don't use default demangling function - You'll need to provide your own" OFF)
|
||||
mark_as_advanced(TRACY_DEMANGLE)
|
||||
if(rocprofiler-sdk_FOUND)
|
||||
|
||||
@@ -646,7 +646,8 @@ Although the basic features will work without them, you'll have to grant elevate
|
||||
|
||||
\subsubsection{Troubleshooting}
|
||||
|
||||
Setting the \texttt{TRACY\_VERBOSE} variable will make the client display advanced information about the detected features. By matching those debug prints to the source code, you might be able to uncover why some of the features are missing on your platform.
|
||||
By default, Tracy's diagnostics will be sent as Message logs (section~\ref{messagelog}) to the server.
|
||||
Setting the \texttt{TRACY\_NO\_INTERNAL\_MESSAGE} define will disable this feature, but setting the \texttt{TRACY\_VERBOSE} will make the client print advanced information about the detected features to the standard error output. By matching those debug prints to the source code, you might be able to uncover why some of the features are missing on your platform.
|
||||
|
||||
\subsubsection{Changing network port}
|
||||
|
||||
@@ -1492,7 +1493,7 @@ Fast navigation in large data sets and correlating zones with what was happening
|
||||
If you want to include color coding of the messages (for example to make critical messages easily visible), you can use \texttt{TracyMessageC(text, size, color)} or \texttt{TracyMessageLC(text, color)} macros.
|
||||
|
||||
Messages can also have different severity levels: \texttt{Trace}, \texttt{Debug}, \texttt{Info}, \texttt{Warning}, \texttt{Error} or \texttt{Fatal}.
|
||||
The previous macros will log messages with the severity "Info". To log a message with a different severity, you may use the \texttt{TracyLogString} macro that regroups all the functionalities from the previous macros. We recommend writing your own macros, wrapping the different severities for easier use. You may provide a color of 0 if you do not want to set a color for this message.
|
||||
The \texttt{TracyMessage} macros will log messages with the severity \texttt{Info}. To log a message with a different severity, you may use the \texttt{TracyLogString} macro that regroups all the functionalities from the previous macros. We recommend writing your own macros, wrapping the different severities for easier use. You may provide a color of 0 if you do not want to set a color for this message.
|
||||
|
||||
Examples:
|
||||
\begin{lstlisting}
|
||||
|
||||
@@ -114,6 +114,10 @@ if get_option('verbose')
|
||||
tracy_common_args += ['-DTRACY_VERBOSE']
|
||||
endif
|
||||
|
||||
if get_option('no_internal_message')
|
||||
tracy_common_args += ['-DTRACY_NO_INTERNAL_MESSAGE']
|
||||
endif
|
||||
|
||||
if get_option('debuginfod')
|
||||
tracy_common_args += ['-DTRACY_DEBUGINFOD']
|
||||
tracy_public_deps += dependency('libdebuginfod')
|
||||
|
||||
@@ -24,5 +24,6 @@ option('manual_lifetime', type : 'boolean', value : false, description : 'Enable
|
||||
option('fibers', type : 'boolean', value : false, description : 'Enable fibers support')
|
||||
option('no_crash_handler', type : 'boolean', value : false, description : 'Disable crash handling')
|
||||
option('verbose', type : 'boolean', value : false, description : 'Enable verbose logging')
|
||||
option('no_internal_message', type : 'boolean', value : false, description : 'Prevent the profiler from logging messages')
|
||||
option('debuginfod', type : 'boolean', value : false, description : 'Enable debuginfod support')
|
||||
option('ignore_memory_faults', type : 'boolean', value : false, description : 'Ignore instrumentation errors from memory free events that do not have a matching allocation')
|
||||
|
||||
@@ -532,7 +532,7 @@ void InitCallstack()
|
||||
#endif //#ifndef TRACY_SYMBOL_OFFLINE_RESOLVE
|
||||
if( s_shouldResolveSymbolsOffline )
|
||||
{
|
||||
TracyDebug("TRACY: enabling offline symbol resolving!\n");
|
||||
TracyDebug( "TRACY: enabling offline symbol resolving!" );
|
||||
}
|
||||
|
||||
CreateImageCaches();
|
||||
@@ -551,7 +551,7 @@ void InitCallstack()
|
||||
const bool initTimeModuleLoad = !( noInitLoadEnv && noInitLoadEnv[0] == '1' );
|
||||
if ( !initTimeModuleLoad )
|
||||
{
|
||||
TracyDebug("TRACY: skipping init time dbghelper module load\n");
|
||||
TracyDebug( "TRACY: skipping init time dbghelper module load" );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -963,7 +963,7 @@ static void InitKernelSymbols()
|
||||
}
|
||||
assert( dst == s_kernelSym + validCnt );
|
||||
|
||||
TracyDebug( "Loaded %zu kernel symbols (%zu code sections)\n", tmpSym.size(), validCnt );
|
||||
TracyDebug( "Loaded %zu kernel symbols (%zu code sections)", tmpSym.size(), validCnt );
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1040,7 +1040,7 @@ void InitCallstack()
|
||||
if( s_shouldResolveSymbolsOffline )
|
||||
{
|
||||
cb_bts = nullptr; // disable use of libbacktrace calls
|
||||
TracyDebug("TRACY: enabling offline symbol resolving!\n");
|
||||
TracyDebug( "TRACY: enabling offline symbol resolving!" );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1100,7 +1100,7 @@ int GetDebugInfoDescriptor( const char* buildid_data, size_t buildid_size, const
|
||||
it->filename = (char*)tracy_malloc( fnsz );
|
||||
memcpy( it->filename, filename, fnsz );
|
||||
it->fd = fd >= 0 ? fd : -1;
|
||||
TracyDebug( "DebugInfo descriptor query: %i, fn: %s\n", fd, filename );
|
||||
TracyDebug( "DebugInfo descriptor query: %i, fn: %s", fd, filename );
|
||||
return it->fd;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,25 @@
|
||||
#ifndef __TRACYPRINT_HPP__
|
||||
#define __TRACYPRINT_HPP__
|
||||
|
||||
#ifdef TRACY_ON_DEMAND
|
||||
# define TRACY_VERBOSE_EARLY_OUT_COND if( !GetProfiler().IsConnected() ) break
|
||||
#else
|
||||
# define TRACY_VERBOSE_EARLY_OUT_COND assert( tracy::ProfilerAvailable() )
|
||||
#endif
|
||||
|
||||
#define TracyInternalMessage( severity, ... ) \
|
||||
do { \
|
||||
TRACY_VERBOSE_EARLY_OUT_COND; \
|
||||
char buffer[4096]; \
|
||||
snprintf( buffer, sizeof(buffer), __VA_ARGS__ ); \
|
||||
tracy::Profiler::LogString( tracy::MessageSourceType::Tracy, severity, 0, TRACY_CALLSTACK, strlen( buffer ), buffer ); \
|
||||
} while( 0 )
|
||||
|
||||
#ifdef TRACY_VERBOSE
|
||||
# include <stdio.h>
|
||||
# define TracyDebug(...) fprintf( stderr, __VA_ARGS__ );
|
||||
# define TracyDebug(...) do { fprintf( stderr, __VA_ARGS__ ); fputc( '\n', stderr ); } while( 0 )
|
||||
#elif !defined(TRACY_NO_INTERNAL_MESSAGE)
|
||||
# define TracyDebug(...) TracyInternalMessage( tracy::MessageSeverity::Debug, __VA_ARGS__ )
|
||||
#else
|
||||
# define TracyDebug(...)
|
||||
#endif
|
||||
|
||||
@@ -87,7 +87,7 @@ KCore::KCore()
|
||||
}
|
||||
|
||||
std::sort( m_offsets.begin(), m_offsets.end(), []( const Offset& lhs, const Offset& rhs ) { return lhs.start < rhs.start; } );
|
||||
TracyDebug( "KCore: %zu segments found\n", m_offsets.size() );
|
||||
TracyDebug( "KCore: %zu segments found", m_offsets.size() );
|
||||
return;
|
||||
|
||||
err:
|
||||
|
||||
@@ -12,11 +12,11 @@ extern "C" int dlclose( void* hnd )
|
||||
struct link_map* lm;
|
||||
if( dlinfo( hnd, RTLD_DI_LINKMAP, &lm ) == 0 )
|
||||
{
|
||||
TracyDebug( "Overriding dlclose for %s\n", lm->l_name );
|
||||
TracyDebug( "Overriding dlclose for %s", lm->l_name );
|
||||
}
|
||||
else
|
||||
{
|
||||
TracyDebug( "Overriding dlclose for unknown object (%s)\n", dlerror() );
|
||||
TracyDebug( "Overriding dlclose for unknown object (%s)", dlerror() );
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
|
||||
@@ -1180,7 +1180,7 @@ static void StartSystemTracing( int64_t& samplingPeriod )
|
||||
const bool disableSystrace = ( noSysTrace && noSysTrace[0] == '1' );
|
||||
if( disableSystrace )
|
||||
{
|
||||
TracyDebug( "TRACY: Sys Trace was disabled by 'TRACY_NO_SYS_TRACE=1'\n" );
|
||||
TracyDebug( "TRACY: Sys Trace was disabled by 'TRACY_NO_SYS_TRACE=1'" );
|
||||
}
|
||||
else if( SysTraceStart( samplingPeriod ) )
|
||||
{
|
||||
@@ -4239,7 +4239,7 @@ void Profiler::HandleSourceCodeQuery( char* data, char* image, uint32_t id )
|
||||
if( buildid )
|
||||
{
|
||||
auto d = debuginfod_find_source( GetDebuginfodClient(), buildid, size, data, nullptr );
|
||||
TracyDebug( "DebugInfo source query: %s, fn: %s, image: %s\n", d >= 0 ? " ok " : "fail", data, image );
|
||||
TracyDebug( "DebugInfo source query: %s, fn: %s, image: %s", d >= 0 ? " ok " : "fail", data, image );
|
||||
if( d >= 0 )
|
||||
{
|
||||
struct stat st;
|
||||
@@ -4269,7 +4269,7 @@ void Profiler::HandleSourceCodeQuery( char* data, char* image, uint32_t id )
|
||||
}
|
||||
else
|
||||
{
|
||||
TracyDebug( "DebugInfo invalid query fn: %s, image: %s\n", data, image );
|
||||
TracyDebug( "DebugInfo invalid query fn: %s, image: %s", data, image );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
auto mapAddr = mmap( nullptr, m_mapSize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
|
||||
if( mapAddr == MAP_FAILED )
|
||||
{
|
||||
TracyDebug( "mmap failed: errno %i (%s)\n", errno, strerror( errno ) );
|
||||
TracyDebug( "mmap failed: errno %i (%s)", errno, strerror( errno ) );
|
||||
m_fd = 0;
|
||||
m_metadata = nullptr;
|
||||
close( fd );
|
||||
|
||||
@@ -138,7 +138,7 @@ void SysPower::ScanDirectory( const char* path, int parent )
|
||||
domain->overflow = maxRange;
|
||||
domain->handle = handle;
|
||||
domain->name = name;
|
||||
TracyDebug( "Power domain id %i, %s found at %s\n", parent, name, path );
|
||||
TracyDebug( "Power domain id %i, %s found at %s", parent, name, path );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -493,7 +493,7 @@ static void ProbePreciseIp( perf_event_attr& pe, unsigned long long config0, uns
|
||||
}
|
||||
pe.precise_ip--;
|
||||
}
|
||||
TracyDebug( " Probed precise_ip: %i\n", pe.precise_ip );
|
||||
TracyDebug( " Probed precise_ip: %i", pe.precise_ip );
|
||||
}
|
||||
|
||||
static void ProbePreciseIp( perf_event_attr& pe, pid_t pid )
|
||||
@@ -509,7 +509,7 @@ static void ProbePreciseIp( perf_event_attr& pe, pid_t pid )
|
||||
}
|
||||
pe.precise_ip--;
|
||||
}
|
||||
TracyDebug( " Probed precise_ip: %i\n", pe.precise_ip );
|
||||
TracyDebug( " Probed precise_ip: %i", pe.precise_ip );
|
||||
}
|
||||
|
||||
static bool IsGenuineIntel()
|
||||
@@ -587,12 +587,12 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
#ifdef TRACY_VERBOSE
|
||||
int paranoidLevel = 2;
|
||||
paranoidLevel = atoi( paranoidLevelStr );
|
||||
TracyDebug( "perf_event_paranoid: %i\n", paranoidLevel );
|
||||
TracyDebug( "perf_event_paranoid: %i", paranoidLevel );
|
||||
#endif
|
||||
|
||||
auto traceFsPath = GetTraceFsPath();
|
||||
if( !traceFsPath ) return false;
|
||||
TracyDebug( "tracefs path: %s\n", traceFsPath );
|
||||
TracyDebug( "tracefs path: %s", traceFsPath );
|
||||
|
||||
int switchId = -1, wakingId = -1, vsyncId = -1;
|
||||
const auto switchIdStr = ReadFile( traceFsPath, "/events/sched/sched_switch/id" );
|
||||
@@ -604,9 +604,9 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
|
||||
tracy_free( traceFsPath );
|
||||
|
||||
TracyDebug( "sched_switch id: %i\n", switchId );
|
||||
TracyDebug( "sched_waking id: %i\n", wakingId );
|
||||
TracyDebug( "drm_vblank_event id: %i\n", vsyncId );
|
||||
TracyDebug( "sched_switch id: %i", switchId );
|
||||
TracyDebug( "sched_waking id: %i", wakingId );
|
||||
TracyDebug( "drm_vblank_event id: %i", vsyncId );
|
||||
|
||||
#ifdef TRACY_NO_SAMPLING
|
||||
const bool noSoftwareSampling = true;
|
||||
@@ -686,7 +686,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
|
||||
if( !noSoftwareSampling )
|
||||
{
|
||||
TracyDebug( "Setup software sampling\n" );
|
||||
TracyDebug( "Setup software sampling" );
|
||||
ProbePreciseIp( pe, currentPid );
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
@@ -698,16 +698,16 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
fd = perf_event_open( &pe, currentPid, i, -1, PERF_FLAG_FD_CLOEXEC );
|
||||
if( fd == -1 )
|
||||
{
|
||||
TracyDebug( " Failed to setup!\n");
|
||||
TracyDebug( " Failed to setup!");
|
||||
break;
|
||||
}
|
||||
TracyDebug( " No access to kernel samples\n" );
|
||||
TracyDebug( " No access to kernel samples" );
|
||||
}
|
||||
new( s_ring+s_numBuffers ) RingBuffer( 64*1024, fd, EventCallstack );
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -731,7 +731,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
|
||||
if( !noRetirement )
|
||||
{
|
||||
TracyDebug( "Setup sampling cycles + retirement\n" );
|
||||
TracyDebug( "Setup sampling cycles + retirement" );
|
||||
ProbePreciseIp( pe, PERF_COUNT_HW_CPU_CYCLES, PERF_COUNT_HW_INSTRUCTIONS, currentPid );
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
@@ -742,7 +742,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -757,7 +757,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -766,12 +766,12 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
// cache reference + miss
|
||||
if( !noCache )
|
||||
{
|
||||
TracyDebug( "Setup sampling CPU cache references + misses\n" );
|
||||
TracyDebug( "Setup sampling CPU cache references + misses" );
|
||||
ProbePreciseIp( pe, PERF_COUNT_HW_CACHE_REFERENCES, PERF_COUNT_HW_CACHE_MISSES, currentPid );
|
||||
if( IsGenuineIntel() )
|
||||
{
|
||||
pe.precise_ip = 0;
|
||||
TracyDebug( " CPU is GenuineIntel, forcing precise_ip down to 0\n" );
|
||||
TracyDebug( " CPU is GenuineIntel, forcing precise_ip down to 0" );
|
||||
}
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
@@ -782,7 +782,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -797,7 +797,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -806,7 +806,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
// branch retired + miss
|
||||
if( !noBranch )
|
||||
{
|
||||
TracyDebug( "Setup sampling CPU branch retirements + misses\n" );
|
||||
TracyDebug( "Setup sampling CPU branch retirements + misses" );
|
||||
ProbePreciseIp( pe, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, PERF_COUNT_HW_BRANCH_MISSES, currentPid );
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
@@ -817,7 +817,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -832,7 +832,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -855,7 +855,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
pe.clockid = CLOCK_MONOTONIC_RAW;
|
||||
#endif
|
||||
|
||||
TracyDebug( "Setup vsync capture\n" );
|
||||
TracyDebug( "Setup vsync capture" );
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
const int fd = perf_event_open( &pe, -1, i, -1, PERF_FLAG_FD_CLOEXEC );
|
||||
@@ -865,7 +865,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -890,7 +890,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
pe.clockid = CLOCK_MONOTONIC_RAW;
|
||||
#endif
|
||||
|
||||
TracyDebug( "Setup context switch capture\n" );
|
||||
TracyDebug( "Setup context switch capture" );
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
const int fd = perf_event_open( &pe, -1, i, -1, PERF_FLAG_FD_CLOEXEC );
|
||||
@@ -900,7 +900,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -923,7 +923,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
pe.clockid = CLOCK_MONOTONIC_RAW;
|
||||
#endif
|
||||
|
||||
TracyDebug( "Setup waking up capture\n" );
|
||||
TracyDebug( "Setup waking up capture" );
|
||||
for( int i=0; i<s_numCpus; i++ )
|
||||
{
|
||||
const int fd = perf_event_open( &pe, -1, i, -1, PERF_FLAG_FD_CLOEXEC );
|
||||
@@ -933,14 +933,14 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
||||
if( s_ring[s_numBuffers].IsValid() )
|
||||
{
|
||||
s_numBuffers++;
|
||||
TracyDebug( " Core %i ok\n", i );
|
||||
TracyDebug( " Core %i ok", i );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TracyDebug( "Ringbuffers in use: %i\n", s_numBuffers );
|
||||
TracyDebug( "Ringbuffers in use: %i", s_numBuffers );
|
||||
|
||||
traceActive.store( true, std::memory_order_relaxed );
|
||||
return true;
|
||||
@@ -994,7 +994,7 @@ void SysTraceWorker( void* ptr )
|
||||
SetThreadName( "Tracy Sampling" );
|
||||
InitRpmalloc();
|
||||
sched_param sp = { 99 };
|
||||
if( pthread_setschedparam( pthread_self(), SCHED_FIFO, &sp ) != 0 ) TracyDebug( "Failed to increase SysTraceWorker thread priority!\n" );
|
||||
if( pthread_setschedparam( pthread_self(), SCHED_FIFO, &sp ) != 0 ) TracyDebug( "Failed to increase SysTraceWorker thread priority!" );
|
||||
auto ctxBufferIdx = s_ctxBufferIdx;
|
||||
auto ringArray = s_ring;
|
||||
auto numBuffers = s_numBuffers;
|
||||
|
||||
@@ -133,12 +133,14 @@ constexpr uint32_t Color_Red4 = 0x8b0000; // TracyColor.hpp
|
||||
|
||||
static void ETWErrorAction( ULONG error_code, const char* message, int length )
|
||||
{
|
||||
#ifndef TRACY_NO_INTERNAL_MESSAGE
|
||||
#ifdef TRACY_HAS_CALLSTACK
|
||||
tracy::InitCallstackCritical();
|
||||
tracy::Profiler::MessageColor( MessageSourceType::Tracy, MessageSeverity::Error, message, length, Color_Red4, 60 );
|
||||
#else
|
||||
tracy::Profiler::MessageColor( MessageSourceType::Tracy, MessageSeverity::Error, message, length, Color_Red4, 0 );
|
||||
#endif
|
||||
#endif
|
||||
#ifdef __cpp_exceptions
|
||||
// TODO: should we throw an exception?
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user