HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
trace.h File Reference
#include "pxr/pxr.h"
#include "pxr/base/trace/api.h"
#include "pxr/base/trace/collector.h"
#include "pxr/base/tf/preprocessorUtilsLite.h"
#include <atomic>
+ Include dependency graph for trace.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  TraceScopeAuto
 
class  TraceAuto
 
class  TraceCounterHolder
 

Macros

#define TRACE_FUNCTION()   _TRACE_FUNCTION_INSTANCE(__LINE__, __ARCH_FUNCTION__, __ARCH_PRETTY_FUNCTION__)
 
#define TRACE_SCOPE(name)   _TRACE_SCOPE_INSTANCE(__LINE__, name)
 
#define TRACE_FUNCTION_SCOPE(name)
 
#define TRACE_MARKER(name)   _TRACE_MARKER_INSTANCE(__LINE__, name)
 Records a timestamp when constructed, using name as the key. More...
 
#define TRACE_MARKER_DYNAMIC(name)   _TRACE_MARKER_DYNAMIC_INSTANCE(__LINE__, name)
 Records a timestamp when constructed, using name as the key. More...
 
#define TRACE_COUNTER_DELTA(name, delta)   _TRACE_COUNTER_INSTANCE(__LINE__, name, delta, /* isDelta */ true)
 
#define TRACE_COUNTER_DELTA_DYNAMIC(name, delta)   TraceCollector::GetInstance().RecordCounterDelta(name, delta);
 
#define TRACE_COUNTER_VALUE(name, value)   _TRACE_COUNTER_INSTANCE(__LINE__, name, value, /* isDelta */ false)
 
#define TRACE_COUNTER_VALUE_DYNAMIC(name, value)   TraceCollector::GetInstance().RecordCounterValue(name, value);
 
#define TRACE_COUNTER_DELTA_CODE(name, code)   _TRACE_COUNTER_CODE_INSTANCE(__LINE__, name, code, true)
 
#define TRACE_FUNCTION_DYNAMIC(name)   _TRACE_FUNCTION_DYNAMIC_INSTANCE(__LINE__, __ARCH_FUNCTION__, __ARCH_PRETTY_FUNCTION__, name)
 
#define TRACE_SCOPE_DYNAMIC(name)   _TRACE_SCOPE_DYNAMIC_INSTANCE(__LINE__, name)
 
#define _TRACE_FUNCTION_INSTANCE(instance, name, prettyName)
 
#define _TRACE_SCOPE_INSTANCE(instance, name)
 
#define _TRACE_FUNCTION_SCOPE_INSTANCE(instance, name, prettyName, scopeName)
 
#define _TRACE_MARKER_INSTANCE(instance, name)
 
#define _TRACE_COUNTER_INSTANCE(instance, name, value, isDelta)
 
#define _TRACE_COUNTER_CODE_INSTANCE(instance, name, code, isDelta)
 
#define _TRACE_FUNCTION_DYNAMIC_INSTANCE(instance, fnName, fnPrettyName, name)   PXR_NS::TraceAuto TF_PP_CAT(TraceAuto_, instance)(fnName, fnPrettyName, name)
 
#define _TRACE_SCOPE_DYNAMIC_INSTANCE(instance, str)   PXR_NS::TraceAuto TF_PP_CAT(TraceAuto_, instance)(str)
 
#define _TRACE_MARKER_DYNAMIC_INSTANCE(instance, name)   TraceCollector::GetInstance().MarkerEvent(name);
 

Macro Definition Documentation

#define _TRACE_COUNTER_CODE_INSTANCE (   instance,
  name,
  code,
  isDelta 
)
Value:
TF_PP_CAT(TraceCounterHolder_, instance)(name); \
if (TF_PP_CAT(TraceCounterHolder_, instance).IsEnabled()) { \
double value = 0.0; \
TF_PP_CAT(TraceCounterHolder_, instance).RecordDelta(value, isDelta); \
}
GLuint const GLchar * name
Definition: glew.h:1814
#define TF_PP_CAT(x, y)
if(rank==1) return rank
GLsizei const GLfloat * value
Definition: glew.h:1849

Definition at line 168 of file trace.h.

#define _TRACE_COUNTER_INSTANCE (   instance,
  name,
  value,
  isDelta 
)
Value:
TF_PP_CAT(TraceKeyData_, instance)(name); \
TF_PP_CAT(TraceCounterHolder_, instance) \
(TF_PP_CAT(TraceKeyData_, instance)); \
TF_PP_CAT(TraceCounterHolder_, instance).Record(value, isDelta);
GLuint const GLchar * name
Definition: glew.h:1814
#define TF_PP_CAT(x, y)
GLsizei const GLfloat * value
Definition: glew.h:1849

Definition at line 160 of file trace.h.

#define _TRACE_FUNCTION_DYNAMIC_INSTANCE (   instance,
  fnName,
  fnPrettyName,
  name 
)    PXR_NS::TraceAuto TF_PP_CAT(TraceAuto_, instance)(fnName, fnPrettyName, name)

Definition at line 177 of file trace.h.

#define _TRACE_FUNCTION_INSTANCE (   instance,
  name,
  prettyName 
)
Value:
TF_PP_CAT(TraceKeyData_, instance)(name, prettyName); \
PXR_NS::TraceScopeAuto TF_PP_CAT(TraceScopeAuto_, instance)(\
TF_PP_CAT(TraceKeyData_, instance));
GLuint const GLchar * name
Definition: glew.h:1814
#define TF_PP_CAT(x, y)

These pair a uniquely named TraceScopeHolder with a TraceScopeAuto. Together these will register a TraceScope only the first time the code is executed or if the TraceScope expires. Otherwise, the held TraceScope will be used to record begin and end events.

Definition at line 137 of file trace.h.

#define _TRACE_FUNCTION_SCOPE_INSTANCE (   instance,
  name,
  prettyName,
  scopeName 
)
Value:
TF_PP_CAT(TraceKeyData_, instance)(name, prettyName, scopeName); \
PXR_NS::TraceScopeAuto TF_PP_CAT(TraceScopeAuto_, instance)(\
TF_PP_CAT(TraceKeyData_, instance));
GLuint const GLchar * name
Definition: glew.h:1814
#define TF_PP_CAT(x, y)

Definition at line 149 of file trace.h.

#define _TRACE_MARKER_DYNAMIC_INSTANCE (   instance,
  name 
)    TraceCollector::GetInstance().MarkerEvent(name);

Definition at line 183 of file trace.h.

#define _TRACE_MARKER_INSTANCE (   instance,
  name 
)
Value:
TF_PP_CAT(TraceKeyData_, instance)(name); \
static TRACE_API TraceCollector & GetInstance()
Returns the singleton instance.
Definition: collector.h:84
GLuint const GLchar * name
Definition: glew.h:1814
void MarkerEventStatic(const TraceKey &key)
Definition: collector.h:320
#define TF_PP_CAT(x, y)

Definition at line 155 of file trace.h.

#define _TRACE_SCOPE_DYNAMIC_INSTANCE (   instance,
  str 
)    PXR_NS::TraceAuto TF_PP_CAT(TraceAuto_, instance)(str)

Definition at line 180 of file trace.h.

#define _TRACE_SCOPE_INSTANCE (   instance,
  name 
)
Value:
TF_PP_CAT(TraceKeyData_, instance)(name); \
PXR_NS::TraceScopeAuto TF_PP_CAT(TraceScopeAuto_, instance)(\
TF_PP_CAT(TraceKeyData_, instance));
GLuint const GLchar * name
Definition: glew.h:1814
#define TF_PP_CAT(x, y)

Definition at line 143 of file trace.h.

#define TRACE_COUNTER_DELTA (   name,
  delta 
)    _TRACE_COUNTER_INSTANCE(__LINE__, name, delta, /* isDelta */ true)

Records a counter delta using the name as the counter key. The delta can be positive or negative. A positive delta will increment the total counter value, whereas a negative delta will decrement it. The recorded value will be stored at the currently traced scope, and will propagate up to the parent scopes.

Definition at line 70 of file trace.h.

#define TRACE_COUNTER_DELTA_CODE (   name,
  code 
)    _TRACE_COUNTER_CODE_INSTANCE(__LINE__, name, code, true)

Records a counter value using the name as the counter key. The value can be positive or negative. A positive value will increment the total counter value, whereas a negative value will decrement it. The recorded value will be stored at the currently traced scope, and will propagate up to the parent scopes.

This macro provides the same functionality as TRACE_COUNTER_DELTA, but takes a section of code in brackets, which assumes that a value will be assigned to 'value'. The section of code will not be executed, when tracing is turned off, which makes it possible to gather counter values from potentially expensive logic, without incurring an overhead with tracing turned off.

Usage:

TRACE_COUNTER_DELTA_CODE("My counter", { value = _ComputeExpensiveCounterValue(); })

Definition at line 111 of file trace.h.

#define TRACE_COUNTER_DELTA_DYNAMIC (   name,
  delta 
)    TraceCollector::GetInstance().RecordCounterDelta(name, delta);

Records a counter delta using the name as the counter key. Similar to TRACE_COUNTER_DELTA except that name does not need to be a compile time string.

See Also
TRACE_COUNTER_DELTA

Definition at line 77 of file trace.h.

#define TRACE_COUNTER_VALUE (   name,
  value 
)    _TRACE_COUNTER_INSTANCE(__LINE__, name, value, /* isDelta */ false)

Records a counter value using the name as the counter key. The recorded value will be stored at the currently traced scope, and will propagate up to the parent scopes.

Definition at line 83 of file trace.h.

#define TRACE_COUNTER_VALUE_DYNAMIC (   name,
  value 
)    TraceCollector::GetInstance().RecordCounterValue(name, value);

Records a counter value using the name as the counter key. Similar to TRACE_COUNTER_VALUE except that name does not need to be a compile time string.

See Also
TRACE_COUNTER_VALUE

Definition at line 90 of file trace.h.

#define TRACE_FUNCTION ( )    _TRACE_FUNCTION_INSTANCE(__LINE__, __ARCH_FUNCTION__, __ARCH_PRETTY_FUNCTION__)

Records a timestamp when constructed and a timespan event when destructed, using the name of the function or method as the key.

Definition at line 43 of file trace.h.

#define TRACE_FUNCTION_DYNAMIC (   name)    _TRACE_FUNCTION_DYNAMIC_INSTANCE(__LINE__, __ARCH_FUNCTION__, __ARCH_PRETTY_FUNCTION__, name)

Records a begin event when constructed and an end event when destructed, using name of the function or method and the supplied name as the key. Unlike TRACE_FUNCTION, the name argument will be evaluated each time this macro is invoked. This allows for a single TRACE_FUNCTION to track time under different keys, but incurs greater overhead.

Definition at line 119 of file trace.h.

#define TRACE_FUNCTION_SCOPE (   name)
Value:
GLuint const GLchar * name
Definition: glew.h:1814
#define _TRACE_FUNCTION_SCOPE_INSTANCE(instance, name, prettyName, scopeName)
Definition: trace.h:149
#define __ARCH_PRETTY_FUNCTION__
Definition: functionLite.h:46
#define __ARCH_FUNCTION__
Definition: functionLite.h:38

Records a timestamp when constructed and a timespan event when destructed, using the name of the function concatenated with name as the key.

Definition at line 53 of file trace.h.

#define TRACE_MARKER (   name)    _TRACE_MARKER_INSTANCE(__LINE__, name)

Records a timestamp when constructed, using name as the key.

Definition at line 58 of file trace.h.

#define TRACE_MARKER_DYNAMIC (   name)    _TRACE_MARKER_DYNAMIC_INSTANCE(__LINE__, name)

Records a timestamp when constructed, using name as the key.

Definition at line 62 of file trace.h.

#define TRACE_SCOPE (   name)    _TRACE_SCOPE_INSTANCE(__LINE__, name)

Records a timestamp when constructed and a timespan event when destructed, using name as the key.

Definition at line 48 of file trace.h.

#define TRACE_SCOPE_DYNAMIC (   name)    _TRACE_SCOPE_DYNAMIC_INSTANCE(__LINE__, name)

Records a begin event when constructed and an end event when destructed, using name as the key. Unlike TRACE_SCOPE, the name argument will be evaluated each time this macro is invoked. This allows for a single TRACE_SCOPE to track time under different keys, but incurs greater overhead.

Definition at line 127 of file trace.h.