Tor  0.4.7.0-alpha-dev
debug.h
Go to the documentation of this file.
1 /* Copyright (c) 2017-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
3 
4 /**
5  * \file debug.h
6  * \brief Macros for debugging our event-trace support.
7  **/
8 
9 #ifndef TOR_TRACE_DEBUG_H
10 #define TOR_TRACE_DEBUG_H
11 
12 #ifdef USE_TRACING_INSTRUMENTATION_LOG_DEBUG
13 
14 #include "lib/log/log.h"
15 
16 /* Stringify pre-processor trick. */
17 #define XSTR(d) STR(d)
18 #define STR(s) #s
19 
20 /* Send every event to a debug log level. This is useful to debug new trace
21  * events without implementing them for a specific event tracing framework.
22  *
23  * NOTE: arguments can't be used because there is no easy generic ways to learn
24  * their type and amount. It is probably doable with massive C pre-processor
25  * trickery but this is meant to be simple. */
26 
27 #define TOR_TRACE_LOG_DEBUG(subsystem, event_name, ...) \
28  log_debug(LD_GENERAL, "Tracepoint \"" XSTR(event_name) "\" from " \
29  "subsystem \"" XSTR(subsystem) "\" hit.")
30 
31 #else /* !defined(USE_TRACING_INSTRUMENTATION_LOG_DEBUG) */
32 
33 /* NOP the debug event. */
34 #define TOR_TRACE_LOG_DEBUG(subsystem, name, ...)
35 
36 #endif /* defined(USE_TRACING_INSTRUMENTATION_LOG_DEBUG) */
37 
38 #endif /* !defined(TOR_TRACE_DEBUG_H) */
Headers for log.c.