mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
trace: Better structure lib/trace and configure options
In the next commits, we'll add more tracing options for instrumentation and specific tracer. This rename follows a more meaningful naming standard. It also adds a catch all "HAVE_TRACING" define that indicate in the code that we have tracing enabled. Part of #32910 Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
e4bfa734a6
commit
6fc6cbd9b3
29
configure.ac
29
configure.ac
@ -256,15 +256,22 @@ AC_ARG_ENABLE(seccomp,
|
|||||||
AC_ARG_ENABLE(libscrypt,
|
AC_ARG_ENABLE(libscrypt,
|
||||||
AS_HELP_STRING(--disable-libscrypt, [do not attempt to use libscrypt]))
|
AS_HELP_STRING(--disable-libscrypt, [do not attempt to use libscrypt]))
|
||||||
|
|
||||||
dnl Enable event tracing which are transformed to debug log statement.
|
dnl --- Tracing Options. ---
|
||||||
AC_ARG_ENABLE(event-tracing-debug,
|
|
||||||
AS_HELP_STRING(--enable-event-tracing-debug, [build with event tracing to debug log]))
|
|
||||||
AM_CONDITIONAL([USE_EVENT_TRACING_DEBUG], [test "x$enable_event_tracing_debug" = "xyes"])
|
|
||||||
|
|
||||||
if test x$enable_event_tracing_debug = xyes; then
|
dnl Tracepoints event to debug logs.
|
||||||
AC_DEFINE([USE_EVENT_TRACING_DEBUG], [1], [Tracing framework to log debug])
|
AC_ARG_ENABLE(tracing-instrumentation-log-debug,
|
||||||
AC_DEFINE([TOR_EVENT_TRACING_ENABLED], [1], [Compile the event tracing instrumentation])
|
AS_HELP_STRING([--enable-tracing-instrumentation-log-debug],
|
||||||
fi
|
[build with tracing event to debug log]),
|
||||||
|
AC_DEFINE([USE_TRACING_INSTRUMENTATION_LOG_DEBUG], [1],
|
||||||
|
[Tracepoints to log debug]), [])
|
||||||
|
AM_CONDITIONAL([USE_TRACING_INSTRUMENTATION_LOG_DEBUG],
|
||||||
|
[test "x$enable_tracing_instrumentation_log_debug" = "xyes"])
|
||||||
|
|
||||||
|
dnl Define that tracing is supported.
|
||||||
|
AM_COND_IF([USE_TRACING_INSTRUMENTATION_LOG_DEBUG],
|
||||||
|
AC_DEFINE([HAVE_TRACING], [1], [Compiled with tracing support]))
|
||||||
|
|
||||||
|
dnl -- End Tracing Options. --
|
||||||
|
|
||||||
dnl Enable Android only features.
|
dnl Enable Android only features.
|
||||||
AC_ARG_ENABLE(android,
|
AC_ARG_ENABLE(android,
|
||||||
@ -2718,6 +2725,12 @@ PPRINT_PROP_BOOL([libFuzzer support (--enable-libfuzzer)], $value)
|
|||||||
test "x$enable_oss_fuzz" = "xyes" && value=1 || value=0
|
test "x$enable_oss_fuzz" = "xyes" && value=1 || value=0
|
||||||
PPRINT_PROP_BOOL([OSS-Fuzz support (--enable-oss-fuzz)], $value)
|
PPRINT_PROP_BOOL([OSS-Fuzz support (--enable-oss-fuzz)], $value)
|
||||||
|
|
||||||
|
AS_ECHO
|
||||||
|
PPRINT_SUBTITLE([Tracing])
|
||||||
|
|
||||||
|
test "x$enable_tracing_instrumentation_log_debug" = "xyes" && value=1 || value=0
|
||||||
|
PPRINT_PROP_BOOL([Tracepoints to log_debug() (--enable-tracing-instrumentation-log-debug)], $value)
|
||||||
|
|
||||||
AS_ECHO
|
AS_ECHO
|
||||||
PPRINT_SUBTITLE([Install Directories])
|
PPRINT_SUBTITLE([Install Directories])
|
||||||
|
|
||||||
|
@ -6,8 +6,10 @@
|
|||||||
* \brief Macros for debugging our event-trace support.
|
* \brief Macros for debugging our event-trace support.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#ifndef TOR_TRACE_LOG_DEBUG_H
|
#ifndef TOR_TRACE_DEBUG_H
|
||||||
#define TOR_TRACE_LOG_DEBUG_H
|
#define TOR_TRACE_DEBUG_H
|
||||||
|
|
||||||
|
#ifdef USE_TRACING_INSTRUMENTATION_LOG_DEBUG
|
||||||
|
|
||||||
#include "lib/log/log.h"
|
#include "lib/log/log.h"
|
||||||
|
|
||||||
@ -17,14 +19,20 @@
|
|||||||
|
|
||||||
/* Send every event to a debug log level. This is useful to debug new trace
|
/* Send every event to a debug log level. This is useful to debug new trace
|
||||||
* events without implementing them for a specific event tracing framework.
|
* events without implementing them for a specific event tracing framework.
|
||||||
* Note that the arguments are ignored since at this step we do not know the
|
*
|
||||||
* types and amount there is. */
|
* NOTE: arguments can't be used becaue there is no easy generic ways to learn
|
||||||
|
* their type and amount. It is probably doable with massive C pre-processor
|
||||||
|
* trickery but this is meant to be simple. */
|
||||||
|
|
||||||
/* Example on how to map a tracepoint to log_debug(). */
|
#define TOR_TRACE_LOG_DEBUG(subsystem, event_name, ...) \
|
||||||
#undef tor_trace
|
log_debug(LD_GENERAL, "Tracepoint \"" XSTR(event_name) "\" from " \
|
||||||
#define tor_trace(subsystem, name, args...) \
|
"subsystem \"" XSTR(subsystem) "\" hit.")
|
||||||
log_debug(LD_GENERAL, "Trace event \"" XSTR(name) "\" from " \
|
|
||||||
"\"" XSTR(subsystem) "\" hit. " \
|
|
||||||
"(line "XSTR(__LINE__) ")")
|
|
||||||
|
|
||||||
#endif /* !defined(TOR_TRACE_LOG_DEBUG_H) */
|
#else /* defined(USE_TRACING_INSTRUMENTATION_LOG_DEBUG) */
|
||||||
|
|
||||||
|
/* NOP the debug event. */
|
||||||
|
#define TOR_TRACE_LOG_DEBUG(subsystem, name, ...)
|
||||||
|
|
||||||
|
#endif /* defined(USE_TRACING_INSTRUMENTATION_LOG_DEBUG) */
|
||||||
|
|
||||||
|
#endif /* !defined(TOR_TRACE_DEBUG_H) */
|
||||||
|
@ -6,40 +6,28 @@
|
|||||||
* \brief Header file for Tor event tracing.
|
* \brief Header file for Tor event tracing.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#ifndef TOR_TRACE_EVENTS_H
|
#ifndef TOR_LIB_TRACE_EVENTS_H
|
||||||
#define TOR_TRACE_EVENTS_H
|
#define TOR_LIB_TRACE_EVENTS_H
|
||||||
|
|
||||||
/*
|
/* XXX: DOCDOC once framework is stable. */
|
||||||
* The following defines a generic event tracing function name that has to be
|
|
||||||
* used to trace events in the code base.
|
|
||||||
*
|
|
||||||
* That generic function is then defined by a event tracing framework. For
|
|
||||||
* instance, the "log debug" framework sends all trace events to log_debug()
|
|
||||||
* which is defined in src/trace/debug.h which can only be enabled at compile
|
|
||||||
* time (--enable-event-tracing-debug).
|
|
||||||
*
|
|
||||||
* By default, every trace events in the code base are replaced by a NOP. See
|
|
||||||
* doc/HACKING/Tracing.md for more information on how to use event tracing or
|
|
||||||
* add events.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef TOR_EVENT_TRACING_ENABLED
|
#ifdef HAVE_TRACING
|
||||||
/* Map every trace event to a per subsystem macro. */
|
|
||||||
#define tor_trace(subsystem, name, ...) \
|
|
||||||
tor_trace_##subsystem(name, __VA_ARGS__)
|
|
||||||
|
|
||||||
/* Enable event tracing for the debug framework where all trace events are
|
#define tor_trace(subsystem, event_name, ...) \
|
||||||
* mapped to a log_debug(). */
|
do { \
|
||||||
#ifdef USE_EVENT_TRACING_DEBUG
|
TOR_TRACE_LOG_DEBUG(tor_ ## subsystem, event_name); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* This corresponds to the --enable-tracing-instrumentation-log-debug
|
||||||
|
* configure option which maps all tracepoints to a log_debug() statement. */
|
||||||
#include "lib/trace/debug.h"
|
#include "lib/trace/debug.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#else /* !defined(TOR_EVENT_TRACING_ENABLED) */
|
#else /* !defined(HAVE_TRACING) */
|
||||||
|
|
||||||
/* Reaching this point, we NOP every event declaration because event tracing
|
/* Reaching this point, tracing is disabled thus we NOP every tracepoints
|
||||||
* is not been enabled at compile time. */
|
* declaration so we have no execution cost at runtime. */
|
||||||
#define tor_trace(subsystem, name, args...)
|
#define tor_trace(subsystem, name, ...)
|
||||||
|
|
||||||
#endif /* defined(TOR_EVENT_TRACING_ENABLED) */
|
#endif /* defined(HAVE_TRACING) */
|
||||||
|
|
||||||
#endif /* !defined(TOR_TRACE_EVENTS_H) */
|
#endif /* !defined(TOR_LIB_TRACE_EVENTS_H) */
|
||||||
|
@ -2,18 +2,20 @@
|
|||||||
noinst_LIBRARIES += \
|
noinst_LIBRARIES += \
|
||||||
src/lib/libtor-trace.a
|
src/lib/libtor-trace.a
|
||||||
|
|
||||||
|
# ADD_C_FILE: INSERT SOURCES HERE.
|
||||||
|
LIBTOR_TRACE_A_SOURCES = \
|
||||||
|
src/lib/trace/trace.c
|
||||||
|
|
||||||
# ADD_C_FILE: INSERT HEADERS HERE.
|
# ADD_C_FILE: INSERT HEADERS HERE.
|
||||||
TRACEHEADERS = \
|
TRACEHEADERS = \
|
||||||
src/lib/trace/trace.h \
|
src/lib/trace/trace.h \
|
||||||
src/lib/trace/events.h
|
src/lib/trace/events.h
|
||||||
|
|
||||||
if USE_EVENT_TRACING_DEBUG
|
if USE_TRACING_INSTRUMENTATION_LOG_DEBUG
|
||||||
TRACEHEADERS += \
|
TRACEHEADERS += \
|
||||||
src/lib/trace/debug.h
|
src/lib/trace/debug.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# ADD_C_FILE: INSERT SOURCES HERE.
|
src_lib_libtor_trace_a_SOURCES = $(LIBTOR_TRACE_A_SOURCES)
|
||||||
src_lib_libtor_trace_a_SOURCES = \
|
|
||||||
src/lib/trace/trace.c
|
|
||||||
|
|
||||||
noinst_HEADERS+= $(TRACEHEADERS)
|
noinst_HEADERS+= $(TRACEHEADERS)
|
||||||
|
Loading…
Reference in New Issue
Block a user