Commit a5288c55 authored by Simon Marlow's avatar Simon Marlow

Unify event logging and debug tracing.

  - tracing facilities are now enabled with -DTRACING, and -DDEBUG
    additionally enables debug-tracing.  -DEVENTLOG has been
    removed.

  - -debug now implies -eventlog

  - events can be printed to stderr instead of being sent to the
    binary .eventlog file by adding +RTS -v (which is implied by the
    +RTS -Dx options).

  - -Dx debug messages can be sent to the binary .eventlog file
    by adding +RTS -l.  This should help debugging by reducing
    the impact of debug tracing on execution time.

  - Various debug messages that duplicated the information in events
    have been removed.
parent c51229b2
...@@ -406,8 +406,8 @@ way_details = ...@@ -406,8 +406,8 @@ way_details =
, "-optc-DPROFILING" ], , "-optc-DPROFILING" ],
Way WayEventLog "l" True "RTS Event Logging" Way WayEventLog "l" True "RTS Event Logging"
[ "-DEVENTLOG" [ "-DTRACING"
, "-optc-DEVENTLOG" ], , "-optc-DTRACING" ],
Way WayTicky "t" True "Ticky-ticky Profiling" Way WayTicky "t" True "Ticky-ticky Profiling"
[ "-DTICKY_TICKY" [ "-DTICKY_TICKY"
......
...@@ -27,6 +27,12 @@ ...@@ -27,6 +27,12 @@
#define USING_LIBBFD 1 #define USING_LIBBFD 1
#endif #endif
/* DEBUG implies TRACING
*/
#if defined(DEBUG)
#define TRACING
#endif
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
Signals - supported on non-PAR versions of the runtime. See RtsSignals.h. Signals - supported on non-PAR versions of the runtime. See RtsSignals.h.
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
......
...@@ -112,11 +112,17 @@ ...@@ -112,11 +112,17 @@
#define EVENT_GC_END 10 /* (cap) */ #define EVENT_GC_END 10 /* (cap) */
#define EVENT_REQUEST_SEQ_GC 11 /* (cap) */ #define EVENT_REQUEST_SEQ_GC 11 /* (cap) */
#define EVENT_REQUEST_PAR_GC 12 /* (cap) */ #define EVENT_REQUEST_PAR_GC 12 /* (cap) */
#define EVENT_CREATE_SPARK 13 /* (cap, thread) */
#define EVENT_SPARK_TO_THREAD 14 /* DEPRECATED! (cap, thread, spark_thread) */
#define EVENT_CREATE_SPARK_THREAD 15 /* (cap, thread, spark_thread) */ #define EVENT_CREATE_SPARK_THREAD 15 /* (cap, thread, spark_thread) */
#define EVENT_LOG_CAP_MSG 16 /* (cap, message ...) */
#define EVENT_LOG_MSG 17 /* (message ...) */
#define EVENT_STARTUP 18 /* (num_capabilities) */
#define NUM_EVENT_TAGS 16 #define NUM_EVENT_TAGS 19
#if 0 /* DEPRECATED EVENTS: */
#define EVENT_CREATE_SPARK 13 /* (cap, thread) */
#define EVENT_SPARK_TO_THREAD 14 /* (cap, thread, spark_thread) */
#endif
/* /*
* Status values for EVENT_STOP_THREAD * Status values for EVENT_STOP_THREAD
...@@ -137,6 +143,7 @@ typedef StgWord16 EventTypeNum; ...@@ -137,6 +143,7 @@ typedef StgWord16 EventTypeNum;
typedef StgWord64 EventTimestamp; // in nanoseconds typedef StgWord64 EventTimestamp; // in nanoseconds
typedef StgWord64 EventThreadID; typedef StgWord64 EventThreadID;
typedef StgWord16 EventCapNo; typedef StgWord16 EventCapNo;
typedef StgWord16 EventPayloadSize; // variable-size events
#endif #endif
......
...@@ -65,13 +65,12 @@ struct DEBUG_FLAGS { ...@@ -65,13 +65,12 @@ struct DEBUG_FLAGS {
rtsBool sanity; /* 'S' warning: might be expensive! */ rtsBool sanity; /* 'S' warning: might be expensive! */
rtsBool stable; /* 't' */ rtsBool stable; /* 't' */
rtsBool prof; /* 'p' */ rtsBool prof; /* 'p' */
rtsBool eventlog; /* 'e' */
rtsBool linker; /* 'l' the object linker */ rtsBool linker; /* 'l' the object linker */
rtsBool apply; /* 'a' */ rtsBool apply; /* 'a' */
rtsBool stm; /* 'm' */ rtsBool stm; /* 'm' */
rtsBool squeeze; /* 'z' stack squeezing & lazy blackholing */ rtsBool squeeze; /* 'z' stack squeezing & lazy blackholing */
rtsBool hpc; /* 'c' coverage */ rtsBool hpc; /* 'c' coverage */
rtsBool timestamp; /* add timestamps to traces */ rtsBool sparks; /* 'r' */
}; };
struct COST_CENTRE_FLAGS { struct COST_CENTRE_FLAGS {
...@@ -118,11 +117,12 @@ struct PROFILING_FLAGS { ...@@ -118,11 +117,12 @@ struct PROFILING_FLAGS {
}; };
#ifdef EVENTLOG struct TRACE_FLAGS {
struct EVENTLOG_FLAGS { rtsBool trace_stderr;
rtsBool doEventLogging; rtsBool timestamp; /* show timestamp in stderr output */
rtsBool scheduler; /* trace scheduler events */
}; };
#endif
struct CONCURRENT_FLAGS { struct CONCURRENT_FLAGS {
int ctxtSwitchTime; /* in milliseconds */ int ctxtSwitchTime; /* in milliseconds */
...@@ -184,9 +184,7 @@ typedef struct _RTS_FLAGS { ...@@ -184,9 +184,7 @@ typedef struct _RTS_FLAGS {
struct DEBUG_FLAGS DebugFlags; struct DEBUG_FLAGS DebugFlags;
struct COST_CENTRE_FLAGS CcFlags; struct COST_CENTRE_FLAGS CcFlags;
struct PROFILING_FLAGS ProfFlags; struct PROFILING_FLAGS ProfFlags;
#ifdef EVENTLOG struct TRACE_FLAGS TraceFlags;
struct EVENTLOG_FLAGS EventLogFlags;
#endif
struct TICKY_FLAGS TickyFlags; struct TICKY_FLAGS TickyFlags;
#if defined(THREADED_RTS) #if defined(THREADED_RTS)
......
...@@ -241,7 +241,6 @@ endif ...@@ -241,7 +241,6 @@ endif
# debug_t : debugging ticky-ticky profiling # debug_t : debugging ticky-ticky profiling
# l : event logging # l : event logging
# thr_l : threaded and event logging # thr_l : threaded and event logging
# thr_debug_l : threaded and debugging and event logging
# #
GhcRTSWays=l GhcRTSWays=l
...@@ -775,8 +774,7 @@ endif ...@@ -775,8 +774,7 @@ endif
# #
# The ways currently defined. # The ways currently defined.
# #
ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug thr_debug_l debug_p thr_debug_p ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug debug_p thr_debug_p
USER_WAYS=a b c d e f g h j k l m n o A B
# #
# The following ways currently have treated specially, p t mg, # The following ways currently have treated specially, p t mg,
...@@ -846,10 +844,6 @@ WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG ...@@ -846,10 +844,6 @@ WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG
WAY_thr_debug_p_NAME=threaded debug profiling WAY_thr_debug_p_NAME=threaded debug profiling
WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof
# Way 'thr_debug_l':
WAY_thr_debug_l_NAME=threaded debug event logging
WAY_thr_debug_l_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -eventlog
# Way 'dyn': build dynamic shared libraries # Way 'dyn': build dynamic shared libraries
WAY_dyn_NAME=dyn WAY_dyn_NAME=dyn
WAY_dyn_HC_OPTS=-fPIC -dynamic WAY_dyn_HC_OPTS=-fPIC -dynamic
...@@ -866,57 +860,6 @@ WAY_thr_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DTHREADED_RTS -optc-DDEBUG ...@@ -866,57 +860,6 @@ WAY_thr_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DTHREADED_RTS -optc-DDEBUG
WAY_debug_dyn_NAME=thr_dyn WAY_debug_dyn_NAME=thr_dyn
WAY_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DDEBUG WAY_debug_dyn_HC_OPTS=-fPIC -dynamic -optc-DDEBUG
#
# Add user-way configurations here:
#
WAY_A_NAME=
WAY_A_HC_OPTS=
WAY_B_NAME=
WAY_B_HC_OPTS=
WAY_a_NAME=
WAY_a_HC_OPTS=
WAY_b_NAME=
WAY_b_HC_OPTS=
WAY_c_NAME=
WAY_c_HC_OPTS=
WAY_d_NAME=
WAY_d_HC_OPTS=
WAY_e_NAME=
WAY_e_HC_OPTS=
WAY_f_NAME=
WAY_f_HC_OPTS=
WAY_g_NAME=
WAY_g_HC_OPTS=
WAY_h_NAME=
WAY_h_HC_OPTS=
WAY_j_NAME=
WAY_j_HC_OPTS=
WAY_k_NAME=
WAY_k_HC_OPTS=
WAY_l_NAME=
WAY_l_HC_OPTS=
WAY_m_NAME=
WAY_m_HC_OPTS=
WAY_n_NAME=
WAY_n_HC_OPTS=
WAY_o_NAME=
WAY_o_HC_OPTS=
################################################################################ ################################################################################
# #
# 31-bit-Int Core files # 31-bit-Int Core files
......
...@@ -95,7 +95,7 @@ findSpark (Capability *cap) ...@@ -95,7 +95,7 @@ findSpark (Capability *cap)
cap->sparks_converted++; cap->sparks_converted++;
// Post event for running a spark from capability's own pool. // Post event for running a spark from capability's own pool.
postEvent(cap, EVENT_RUN_SPARK, cap->r.rCurrentTSO->id, 0); traceSchedEvent(cap, EVENT_RUN_SPARK, cap->r.rCurrentTSO, 0);
return spark; return spark;
} }
...@@ -127,14 +127,10 @@ findSpark (Capability *cap) ...@@ -127,14 +127,10 @@ findSpark (Capability *cap)
} }
if (spark != NULL) { if (spark != NULL) {
debugTrace(DEBUG_sched,
"cap %d: Stole a spark from capability %d",
cap->no, robbed->no);
cap->sparks_converted++; cap->sparks_converted++;
postEvent(cap, EVENT_STEAL_SPARK, traceSchedEvent(cap, EVENT_STEAL_SPARK,
cap->r.rCurrentTSO->id, robbed->no); cap->r.rCurrentTSO, robbed->no);
return spark; return spark;
} }
...@@ -580,10 +576,9 @@ yieldCapability (Capability** pCap, Task *task) ...@@ -580,10 +576,9 @@ yieldCapability (Capability** pCap, Task *task)
Capability *cap = *pCap; Capability *cap = *pCap;
if (waiting_for_gc == PENDING_GC_PAR) { if (waiting_for_gc == PENDING_GC_PAR) {
debugTrace(DEBUG_sched, "capability %d: becoming a GC thread", cap->no); traceSchedEvent(cap, EVENT_GC_START, 0, 0);
postEvent(cap, EVENT_GC_START, 0, 0);
gcWorkerThread(cap); gcWorkerThread(cap);
postEvent(cap, EVENT_GC_END, 0, 0); traceSchedEvent(cap, EVENT_GC_END, 0, 0);
return; return;
} }
...@@ -790,8 +785,7 @@ shutdownCapability (Capability *cap, Task *task, rtsBool safe) ...@@ -790,8 +785,7 @@ shutdownCapability (Capability *cap, Task *task, rtsBool safe)
continue; continue;
} }
postEvent(cap, EVENT_SHUTDOWN, 0, 0); traceSchedEvent(cap, EVENT_SHUTDOWN, 0, 0);
debugTrace(DEBUG_sched, "capability %d is stopped.", cap->no);
RELEASE_LOCK(&cap->lock); RELEASE_LOCK(&cap->lock);
break; break;
} }
...@@ -880,8 +874,6 @@ markSomeCapabilities (evac_fn evac, void *user, nat i0, nat delta, ...@@ -880,8 +874,6 @@ markSomeCapabilities (evac_fn evac, void *user, nat i0, nat delta,
#endif #endif
for (task = cap->suspended_ccalling_tasks; task != NULL; for (task = cap->suspended_ccalling_tasks; task != NULL;
task=task->next) { task=task->next) {
debugTrace(DEBUG_sched,
"evac'ing suspended TSO %lu", (unsigned long)task->suspended_tso->id);
evac(user, (StgClosure **)(void *)&task->suspended_tso); evac(user, (StgClosure **)(void *)&task->suspended_tso);
} }
......
...@@ -1051,6 +1051,15 @@ void prettyPrintClosure_ (StgClosure *obj) ...@@ -1051,6 +1051,15 @@ void prettyPrintClosure_ (StgClosure *obj)
} }
} }
char *what_next_strs[] = {
[0] = "(unknown)",
[ThreadRunGHC] = "ThreadRunGHC",
[ThreadInterpret] = "ThreadInterpret",
[ThreadKilled] = "ThreadKilled",
[ThreadRelocated] = "ThreadRelocated",
[ThreadComplete] = "ThreadComplete"
};
#else /* DEBUG */ #else /* DEBUG */
void printPtr( StgPtr p ) void printPtr( StgPtr p )
{ {
......
...@@ -30,6 +30,8 @@ extern void printTSO ( StgTSO *tso ); ...@@ -30,6 +30,8 @@ extern void printTSO ( StgTSO *tso );
extern void DEBUG_LoadSymbols( char *name ); extern void DEBUG_LoadSymbols( char *name );
extern const char *lookupGHCName( void *addr ); extern const char *lookupGHCName( void *addr );
extern char *what_next_strs[];
#endif #endif
#pragma GCC visibility pop #pragma GCC visibility pop
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "STM.h" #include "STM.h"
#include "Sanity.h" #include "Sanity.h"
#include "Profiling.h" #include "Profiling.h"
#include "eventlog/EventLog.h"
#if defined(mingw32_HOST_OS) #if defined(mingw32_HOST_OS)
#include "win32/IOManager.h" #include "win32/IOManager.h"
#endif #endif
...@@ -162,11 +161,7 @@ throwTo (Capability *cap, // the Capability we hold ...@@ -162,11 +161,7 @@ throwTo (Capability *cap, // the Capability we hold
(unsigned long)source->id, (unsigned long)target->id); (unsigned long)source->id, (unsigned long)target->id);
#ifdef DEBUG #ifdef DEBUG
if (traceClass(DEBUG_sched)) { traceThreadStatus(DEBUG_sched, target);
debugTraceBegin("throwTo: target");
printThreadStatus(target);
debugTraceEnd();
}
#endif #endif
goto check_target; goto check_target;
......
...@@ -106,12 +106,11 @@ void initRtsFlagsDefaults(void) ...@@ -106,12 +106,11 @@ void initRtsFlagsDefaults(void)
RtsFlags.DebugFlags.stable = rtsFalse; RtsFlags.DebugFlags.stable = rtsFalse;
RtsFlags.DebugFlags.stm = rtsFalse; RtsFlags.DebugFlags.stm = rtsFalse;
RtsFlags.DebugFlags.prof = rtsFalse; RtsFlags.DebugFlags.prof = rtsFalse;
RtsFlags.DebugFlags.eventlog = rtsFalse;
RtsFlags.DebugFlags.apply = rtsFalse; RtsFlags.DebugFlags.apply = rtsFalse;
RtsFlags.DebugFlags.linker = rtsFalse; RtsFlags.DebugFlags.linker = rtsFalse;
RtsFlags.DebugFlags.squeeze = rtsFalse; RtsFlags.DebugFlags.squeeze = rtsFalse;
RtsFlags.DebugFlags.hpc = rtsFalse; RtsFlags.DebugFlags.hpc = rtsFalse;
RtsFlags.DebugFlags.timestamp = rtsFalse; RtsFlags.DebugFlags.sparks = rtsFalse;
#endif #endif
#if defined(PROFILING) #if defined(PROFILING)
...@@ -135,8 +134,10 @@ void initRtsFlagsDefaults(void) ...@@ -135,8 +134,10 @@ void initRtsFlagsDefaults(void)
RtsFlags.ProfFlags.bioSelector = NULL; RtsFlags.ProfFlags.bioSelector = NULL;
#endif #endif
#ifdef EVENTLOG #ifdef TRACING
RtsFlags.EventLogFlags.doEventLogging = rtsFalse; RtsFlags.TraceFlags.trace_stderr = rtsFalse;
RtsFlags.TraceFlags.timestamp = rtsFalse;
RtsFlags.TraceFlags.scheduler = rtsFalse;
#endif #endif
RtsFlags.MiscFlags.tickInterval = 20; /* In milliseconds */ RtsFlags.MiscFlags.tickInterval = 20; /* In milliseconds */
...@@ -196,9 +197,11 @@ usage_text[] = { ...@@ -196,9 +197,11 @@ usage_text[] = {
" -m<n> Minimum % of heap which must be available (default 3%)", " -m<n> Minimum % of heap which must be available (default 3%)",
" -G<n> Number of generations (default: 2)", " -G<n> Number of generations (default: 2)",
" -T<n> Number of steps in younger generations (default: 2)", " -T<n> Number of steps in younger generations (default: 2)",
" -c<n> Auto-enable compaction of the oldest generation when live data is", " -c<n> Use in-place compaction instead of copying in the oldest generation",
" at least <n>% of the maximum heap size set with -M (default: 30%)", " when live data is at least <n>% of the maximum heap size set with",
" -c Enable compaction for all major collections", " -M (default: 30%)",
" -c Use in-place compaction for all oldest generation collections",
" (the default is to use copying)",
" -w Use mark-region for the oldest generation (experimental)", " -w Use mark-region for the oldest generation (experimental)",
#if defined(THREADED_RTS) #if defined(THREADED_RTS)
" -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)", " -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)",
...@@ -252,9 +255,13 @@ usage_text[] = { ...@@ -252,9 +255,13 @@ usage_text[] = {
# endif # endif
#endif /* PROFILING or PAR */ #endif /* PROFILING or PAR */
#ifdef EVENTLOG #ifdef TRACING
"", "",
" -l Log runtime events (generates binary trace file <program>.eventlog)", " -v Log events to stderr",
" -l Log events in binary format to the file <program>.eventlog",
" -vt Include time stamps when tracing events to stderr with -v",
"",
" -ls Log scheduler events",
"", "",
#endif #endif
...@@ -275,8 +282,6 @@ usage_text[] = { ...@@ -275,8 +282,6 @@ usage_text[] = {
" This sets the resolution for -C and the profile timer -i.", " This sets the resolution for -C and the profile timer -i.",
" Default: 0.02 sec.", " Default: 0.02 sec.",
"", "",
" -vt Time-stamp debug messages",
"",
#if defined(DEBUG) #if defined(DEBUG)
" -Ds DEBUG: scheduler", " -Ds DEBUG: scheduler",
" -Di DEBUG: interpreter", " -Di DEBUG: interpreter",
...@@ -293,6 +298,10 @@ usage_text[] = { ...@@ -293,6 +298,10 @@ usage_text[] = {
" -Dm DEBUG: stm", " -Dm DEBUG: stm",
" -Dz DEBUG: stack squezing", " -Dz DEBUG: stack squezing",
" -Dc DEBUG: program coverage", " -Dc DEBUG: program coverage",
" -Dr DEBUG: sparks",
"",
" NOTE: all -D options also enable -v automatically. Use -l to create a",
" binary event log file instead.",
"", "",
#endif /* DEBUG */ #endif /* DEBUG */
#if defined(THREADED_RTS) && !defined(NOSMP) #if defined(THREADED_RTS) && !defined(NOSMP)
...@@ -472,10 +481,10 @@ errorBelch("not built for: -prof"); \ ...@@ -472,10 +481,10 @@ errorBelch("not built for: -prof"); \
error = rtsTrue; error = rtsTrue;
#endif #endif
#ifdef EVENTLOG #ifdef TRACING
# define EVENTLOG_BUILD_ONLY(x) x # define TRACING_BUILD_ONLY(x) x
#else #else
# define EVENTLOG_BUILD_ONLY(x) \ # define TRACING_BUILD_ONLY(x) \
errorBelch("not built for: -par-prof"); \ errorBelch("not built for: -par-prof"); \
error = rtsTrue; error = rtsTrue;
#endif #endif
...@@ -617,9 +626,6 @@ error = rtsTrue; ...@@ -617,9 +626,6 @@ error = rtsTrue;
case 'p': case 'p':
RtsFlags.DebugFlags.prof = rtsTrue; RtsFlags.DebugFlags.prof = rtsTrue;
break; break;
case 'e':
RtsFlags.DebugFlags.eventlog = rtsTrue;
break;
case 'l': case 'l':
RtsFlags.DebugFlags.linker = rtsTrue; RtsFlags.DebugFlags.linker = rtsTrue;
break; break;
...@@ -635,10 +641,16 @@ error = rtsTrue; ...@@ -635,10 +641,16 @@ error = rtsTrue;
case 'c': case 'c':
RtsFlags.DebugFlags.hpc = rtsTrue; RtsFlags.DebugFlags.hpc = rtsTrue;
break; break;
case 'r':
RtsFlags.DebugFlags.sparks = rtsTrue;
break;
default: default:
bad_option( rts_argv[arg] ); bad_option( rts_argv[arg] );
} }
} }
// -Dx also turns on -v. Use -l to direct trace
// events to the .eventlog file instead.
RtsFlags.TraceFlags.trace_stderr = rtsTrue;
break; break;
} }
#endif #endif
...@@ -743,8 +755,19 @@ error = rtsTrue; ...@@ -743,8 +755,19 @@ error = rtsTrue;
/* =========== PROFILING ========================== */ /* =========== PROFILING ========================== */
case 'l': case 'l':
#ifdef EVENTLOG #ifdef TRACING
RtsFlags.EventLogFlags.doEventLogging = rtsTrue; switch(rts_argv[arg][2]) {
case '\0':
RtsFlags.TraceFlags.trace_stderr = rtsFalse;
break;
case 's':
RtsFlags.TraceFlags.scheduler = rtsTrue;
break;
default:
errorBelch("unknown RTS option: %s",rts_argv[arg]);
error = rtsTrue;
break;
}
#else #else
errorBelch("not built for: -eventlog"); errorBelch("not built for: -eventlog");
#endif #endif
...@@ -1049,13 +1072,14 @@ error = rtsTrue; ...@@ -1049,13 +1072,14 @@ error = rtsTrue;
case 'v': case 'v':
switch(rts_argv[arg][2]) { switch(rts_argv[arg][2]) {
case '\0': #ifdef TRACING
errorBelch("incomplete RTS option: %s",rts_argv[arg]); case '\0':
error = rtsTrue; RtsFlags.TraceFlags.trace_stderr = rtsTrue;
break; break;
case 't': case 't':
RtsFlags.DebugFlags.timestamp = rtsTrue; RtsFlags.TraceFlags.timestamp = rtsTrue;
break; break;
#endif
case 's': case 's':
case 'g': case 'g':
// ignored for backwards-compat // ignored for backwards-compat
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include "sm/BlockAlloc.h" #include "sm/BlockAlloc.h"
#include "Trace.h" #include "Trace.h"
#include "Stable.h" #include "Stable.h"
#include "eventlog/EventLog.h"
#include "Hash.h" #include "Hash.h"
#include "Profiling.h" #include "Profiling.h"
#include "Timer.h" #include "Timer.h"
...@@ -146,7 +145,7 @@ hs_init(int *argc, char **argv[]) ...@@ -146,7 +145,7 @@ hs_init(int *argc, char **argv[])
#endif #endif
/* initTracing must be after setupRtsFlags() */ /* initTracing must be after setupRtsFlags() */
#ifdef DEBUG #ifdef TRACING
initTracing(); initTracing();
#endif #endif
...@@ -190,12 +189,6 @@ hs_init(int *argc, char **argv[]) ...@@ -190,12 +189,6 @@ hs_init(int *argc, char **argv[])
initProfiling1(); initProfiling1();