diff --git a/doc/efun/trace b/doc/efun/trace
new file mode 100644
index 0000000..36edc79
--- /dev/null
+++ b/doc/efun/trace
@@ -0,0 +1,54 @@
+GESCHUETZT
+SYNOPSIS
+        #include <sys/trace.h>
+
+        int trace(int traceflags);
+
+BESCHREIBUNG
+        Setzt die Trace Flags und liefert die alten Trace Flags zurueck.
+        Wenn Tracing eingeschaltet ist, wird waehrend der Ausfuehrung eine
+        Menge Informationen ausgegeben. Zu viel Output kann die Verbindung
+        lahm legen oder sogar den ganzen Treiber zum Absturz bringen.
+
+        Tracing erfolgt auf einer Pro-Verbindung-Basis: jeder interaktive (!)
+        User kann sein eigenes Tracelevel und -praefix festlegen. Jeder
+        erhaelt nur den Traceoutput fuer den Code, der waehrend der
+        Auswertung eines vom User eingegeben Kommandos ausgefuehrt wird.
+
+        Die Trace-Bits (aus <trace.h>) sind:
+
+            TRACE_NOTHING       (  0): Beendet das Tracing
+            TRACE_CALL          (  1): Tracet alle Aufrufe von Lfuns
+            TRACE_CALL_OTHER    (  2): Tracet alle call_other() Aufrufe
+            TRACE_RETURN        (  4): Tracet Resultate von Funktionen
+            TRACE_ARGS          (  8): Gibt Argumente und Resultate von
+                                       Funktionen aus
+            TRACE_EXEC          ( 16): Tracet alle ausgefuehrten Anweisungen
+            TRACE_HEART_BEAT    ( 32): Tracet den Heartbeat Code
+            TRACE_APPLY         ( 64): Tracet Treiber-Applies
+            TRACE_OBJNAME       (128): Gibt den Namen des Objektes aus
+
+        TRACE_EXEC und TRACE_HEART_BEAT sollten nicht verwendet werden, weil
+        sie massiven Output verursachen. TRACE_OBJNAME sollte nicht verwendet
+        werden, wenn bekannt ist, welches Objekt getracet wird.
+
+        Die Master-Lfun valid_trace() wird mit ("trace", traceflags)
+        aufgerufen, um die Erlaubnis fuer die Nutzung von trace() zu erhalten.
+
+BEISPIEL
+        object obj;
+        string prefix;
+        obj=find_player("thomas");
+        prefix=objec_name(obj);
+        prefix=prefix[1..strlen(prefix)-1];  /* entfernt den Praefix "/" */
+        traceprefix(prefix);
+        /* Von hier an wird nur Code im Objekt std/player#69 getracet */
+        trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS);
+        ...
+        trace(TRACE_NOTHING);
+
+AENDERUNGEN
+        LDMud 3.2.9 uebergibt auch <traceflags> an valid_trace()
+
+SIEHE AUCH
+        traceprefix(E)
