SYNOPSIS
        #include <trace.h>

        int trace(int traceflags)

DESCRIPTION
        Sets the trace flags and returns the old trace flags. When
        tracing is on, a lot of information is printed during
        execution and too much output can crash your connection or
        even the whole driver.

        Tracing is done on a per-connection basis: each interactive(!)
        user may specifiy their own tracelevel and -prefix. Each gets the
        traceoutput for just the code executed during the evaluation
        of the commands he entered.

        The trace bits are:

          TRACE_NOTHING     (  0): stop tracing.

          TRACE_CALL        (  1): trace all calls to lfuns.
          TRACE_CALL_OTHER  (  2): trace call_others()s.
          TRACE_RETURN      (  4): trace function returns.
          TRACE_ARGS        (  8): print function arguments and results.
          TRACE_EXEC        ( 16): trace all executed instructions.
          TRACE_HEART_BEAT  ( 32): trace heartbeat code.
          TRACE_APPLY       ( 64): trace driver applies.
          TRACE_OBJNAME     (128): print the object names.

        TRACE_EXEC and TRACE_HEART_BEAT should be avoided as they cause
        massive output! TRACE_OBJNAME should be avoided when you know
        what you trace.

        The master-lfun valid_trace() is called with ("trace", traceflags)
        as argument to verify the use of this efun.


EXAMPLES
        object obj;
        string prefix;
        obj = find_player("wessex");
        prefix = object_name(obj);
        prefix = prefix[1..];  /* cut off the leading "/" */
        traceprefix(prefix);
          /* From here on, only code in the object "std/player#69"
           * will be traced.
           */
        trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
        ...
        trace(TRACE_NOTHING);

HISTORY
        LDMud 3.2.9 passes the <traceflags> argument to the valid_trace()
        apply as well.

SEE ALSO
        traceprefix(E)
