DEPRECATED
SYNOPSIS
        #include <debug_info.h>

        mixed debug_info(int flag)
        mixed debug_info(int flag, mixed arg)
        mixed debug_info(int flag, mixed arg2, mixed arg3)

BESCHREIBUNG
        Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
        des Treibers. <flag> kann dabei folgende in debug_info.h definierte
        Werte enthalten:

        DINFO_OBJECT   (0): Angezeigt werden Informationen zum in <arg>
            spezifizierten Objekt, zum Beispiel heart_beat,
            enable_commands etc. Die Funktion liefert 0 zurueck.

        DINFO_MEMORY   (1): Angezeigt werden Informationen zu
            Speicherbelegung und -ausnutzung des in <arg> spezifizierten
            Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
            Objektgroesse etc. Die Funktion liefert 0 zurueck.

        DINFO_OBJLIST  (2): debug_info() liefert Objekte aus der globalen
            Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
            Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
            ist, das n-te Element. Ist <arg2> ein Objekt, werden die
            nachfolgenden Objekte in der Objektliste zurueck geliefert.
            Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
            gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
            Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
            ein Array mit hoechstens m Elementen zurueck geliefert. Auf
            diese Weise kann ein Array mit saemtlichen Objekten im Spiel
            erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
            entsprechende maximale Arraygroesse vorausgesetzt).

        DINFO_MALLOC   (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
            Es muessen keine weiteren Argumente angegeben werden.

        DINFO_STATUS   (4): Angezeigt wird die Statusinformation des Drivers.
            Optional kann das Argument <arg> die Werte 0, "tables", "swap",
            "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
            Das Resultat ist ein druckbarer String, der die Statusinformation
            enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.

        DINFO_DUMP     (5): Die durch <arg2> angeforderte Information wird
            in ein File geschrieben, das man mit <arg3> angeben kann. Wird
            <arg3> nicht angegeben, wird eine Standarddatei verwendet.
            debug_info() ueberprueft mittels master->valid_write(), ob es
            das File schreiben kann. Falls bereits eine entsprechende Datei
            existiert, wird diese ueberschrieben. Die Funktion liefert 1
            bei Erfolg, 0 sonst.

            <arg2> == "objects": liefert Informationen ueber alle Objekte im
                Spiel und schreibt diese standardmaessig in die Datei
                /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
                Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
                jeweils folgende Informationen aufgelistet sind:
                  - Name des Objekts (object_name)
                  - Groesse im Speicher, gemeinsamer genutzter Speicher nur
                    einmal gezaehlt
                  - Groesse im Speicher, wenn es keine gemeinsam genutzte
                    Daten geben wuerde
                  - Anzahl Referenzen
                  - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
                  - der Name der Umgebung oder '--', wenn das Objekt keine
                    Umgebung hat
                  - in Klammern die Anzahl der durch das Objekt verursachten
                    Verarbeitungsschritten (execution ticks)
                  - der Swap-Status:
                      > nichts, wenn das Objekt nicht geswapt wurde
                      > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
                      > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
                      > 'SWAPPED', wenn beide geswapt wurden
                  - die Zeit, zu der das Objekt geladen wurde.

            <arg2> == "destructed": liefert Informationen ueber alle
                zerstoerten Objekte und schreibt diese standardmaessig in
                die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
                uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
                in der jeweils folgende Informationen aufgelistet sind:
                  - Name des Objekts (object_name)
                  - Anzahl der Referenzen
                  - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
                    zerstoert wurde, nichts wenn es bereits fruehre zerstoert
                    worden war.

            <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
                opcodes. Standardmaessig wird in die Datei /OPC_DUMP
                geschrieben. valid_write() wird 'opcdump' uebergeben.

            <arg2> == "memory": liefert eine Liste aller allokierten
                Speicherbloecke.
                Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
                valid_write() wird 'memdump' uebergeben.  Existiert die
                Datei bereits, werden die neuen Daten angehaengt.
                Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
                wird keine Datei geschrieben und immer 0 zurueckgegeben.
                Diese Funktion ist am nuetzlichsten wenn der Allokator
                mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
                wurde.


        DINFO_DATA    (6): Liefert Rohdaten ueber gewisse, durch <arg2>
            spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
            ein Array mit der Information oder 0, falls <arg2> keinen
            gueltigen Wert enthalten hat.
            Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
            Resultat-Array, liefert die Funktion nur das entsprechende
            Element zurueck.
            Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
            DID_MALLOC.

            <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
                Information. Folgende Indizes sind definiert:
                  - int DID_ST_BOOT_TIME
                        die Zeit (time()), zu der das Mud gestartet wurde
                  - int DID_ST_ACTIONS
                  - int DID_ST_ACTIONS_SIZE
                        die Anzahl und Groesse im Speicher der allozierten
                        Actions.
                  - int DID_ST_SHADOWS
                  - int DID_ST_SHADOWS_SIZE
                        Anzahl und Groesse im Speicher aller allozierten
                        Shadows.
                  - int DID_ST_OBJECTS
                  - int DID_ST_OBJECTS_SIZE
                        Anzahl und Groesse im Speicher aller Objekte.
                  - int DID_ST_OBJECTS_SWAPPED
                  - int DID_ST_OBJECTS_SWAP_SIZE
                        Anzahl und Groesse im Speicher der geswapten
                        Variablenbloecke der Objekte
                  - int DID_ST_OBJECTS_LIST
                        Anzahl Objekte in der Objektliste
                  - int DID_ST_OBJECTS_NEWLY_DEST
                        Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
                        die in diesem Verarbeitungszyklus zerstoert wurden)
                  - int DID_ST_OBJECTS_DESTRUCTED
                        Anzahl der zerstoerten, aber noch immer referenzierten
                        Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
                        bereits gezaehlten.
                  - int DID_ST_OBJECTS_PROCESSED
                        Anzahl der gelisteten Objekte, die im letzten
                        Verarbeitungszyklus verarbeitet wurden.
                  - float DID_ST_OBJECTS_AVG_PROC
                        Durchschnittlicher Anteil der pro Zyklus verarbeiteten
                        Objekte, ausgedrueckt in Prozent (0 .. 1.0)
                  - int DID_ST_OTABLE
                        Anzahl eingetragener Objekte in der Objekttabelle
                  - int DID_ST_OTABLE_SLOTS
                        Anzahl von Hashplaetzen, die von jeder Objekttabelle
                        bereitgestellt werden
                  - int DID_ST_OTABLE_SIZE
                        Durch die Objekttabelle belegter Speicher
                  - int DID_ST_HBEAT_OBJS
                        Anzahl Objekte mit einem heart_beat()
                  - int DID_ST_HBEAT_CALLS
                        Anzahl aktiver heart_beat() Zyklen bisher (d.h.
                        Zyklen, in denen mindestens eine heart_beat() Funktion
                        aufgerufen wurde)
                  - int DID_ST_HBEAT_CALLS_TOTAL
                        Gesamtzahl von heart_beat() Zyklen bisher.
                  - int DID_ST_HBEAT_SLOTS
                  - int DID_ST_HBEAT_SIZE
                        Anzahl und Groesse aller allozierten Eintraege in der
                        heart_beat() Tabelle.
                  - int DID_ST_HBEAT_PROCESSED
                        Anzahl heart_beat()s im letzten Zyklus
                  - float DID_ST_HBEAT_AVG_PROC
                        Durchschnittlicher Anteil der pro Zyklus aufgerufenen
                        heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
                  - int DID_ST_CALLOUTS
                        Anzahl und Groesse aller laufenden call_out()s
                  - int DID_ST_ARRAYS
                  - int DID_ST_ARRAYS_SIZE
                        Anzahl und Groesse aller Arrays
                  - int DID_ST_MAPPINGS
                  - int DID_ST_MAPPINGS_SIZE
                        Anzahl und Groesse aller Mappings
                  - int DID_ST_PROGS
                  - int DID_ST_PROGS_SIZE
                        Anzahl und Groesse aller Programme
                  - int DID_ST_PROGS_SWAPPED
                  - int DID_ST_PROGS_SWAP_SIZE
                        Anzahl und Groesse der geswapten Programme
                  - int DID_ST_USER_RESERVE
                  - int DID_ST_MASTER_RESERVE
                  - int DID_ST_SYSTEM_RESERVE
                        Momentane Groesse der drei Speicherreserven
                  - int DID_ST_ADD_MESSAGE
                  - int DID_ST_PACKETS
                  - int DID_ST_PACKET_SIZE
                        Anzahl Aufrufe von add_message(), Anzahl und Groesse
                        der versendeten Pakete.
                        Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
                        liefern alle drei Werte immer -1 zurueck.
                  - int DID_ST_APPLY
                  - int DID_ST_APPLY_HITS
                        Anzahl Aufrufen von apply_low(), und wie viele davon
                        Cache-Treffer waren. Wenn der Driver nicht mit
                        APPLY_CACHE_STAT kompiliert wurde, liefern beide
                        Werte immer -1.
                  - int DID_ST_STRINGS
                  - int DID_ST_STRING_SIZE
                        Anzahl unterschiedlicher Strings in der Stringtabelle,
                        sowie ihre Groesse
                  - int DID_ST_STR_TABLE_SIZE
                        Groesse der String Tabelle
                  - int DID_ST_STR_REQ
                  - int DID_ST_STR_REQ_SIZE
                        Gesamte Anzahl von String Allokationen, und ihre
                        Groesse
                  - int DID_ST_STR_SEARCHES
                  - int DID_ST_STR_SEARCH_LEN
                        Anzahl Suchvorgaenge in der Stringtabelle und die
                        Gesamtlaenge des Suchstrings
                  - int DID_ST_STR_FOUND
                        Anzahl erfolgreicher Suchvorgaenge
                  - int DID_ST_STR_ENTRIES
                        Anzahl Eintraege (Hash Ketten) in der String Tabelle
                  - int DID_ST_STR_ADDED
                        Anzahl zur String Tabelle bisher hinzugefuegter
                        Strings
                  - int DID_ST_STR_DELETED
                        Anzahl aus der String Tabelle bisher geloeschter
                        Strings
                  - int DID_ST_STR_COLLISIONS
                        Anzahl zu einer existierenden Hash Kette hinzugefuegte
                        Strings
                  - int DID_ST_RX_CACHED
                        Anzahl gecacheter regulaerer Ausdruecke (regular
                        expressions)
                  - int DID_ST_RX_TABLE
                  - int DID_ST_RX_TABLE_SIZE
                        Anzahl Plaetze in der Regexp Cache Tabelle und
                        Speicherbedarf der gecacheten Ausdruecke
                  - int DID_ST_RX_REQUESTS
                        Anzahl Anfragen fuer neue regexps
                  - int DID_ST_RX_REQ_FOUND
                        Anzahl gefundener regexps in der regexp Cache Tabelle
                  - int DID_ST_RX_REQ_COLL
                        Anzahl angefragter regexps, die mit einer bestehenden
                        regexp kollidierten
                  - int DID_ST_MB_FILE
                        Die Groesse des 'File' Speicherpuffers
                  - int DID_ST_MB_SWAP
                        Die Groesse des 'Swap' Speicherpuffers

            <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
                  - int DID_SW_PROGS
                  - int DID_SW_PROG_SIZE
                        Anzahl und Groesse der geswappten Programmbloecke
                  - int DID_SW_PROG_UNSWAPPED
                  - int DID_SW_PROG_U_SIZE
                        Anzahl und Groesse der nicht geswappten Bloecke
                  - int DID_SW_VARS
                  - int DID_SW_VAR_SIZE
                        Anzahl und Groesse der geswappten Variablenbloecke
                  - int DID_SW_FREE
                  - int DID_SW_FREE_SIZE
                        Anzahl und Groesse der freien Bloecke in der
                        Auslagerungsdatei
                  - int DID_SW_FILE_SIZE
                        Groesse der Auslagerungsdatei
                  - int DID_SW_REUSED
                        Gesamter wiederverwendeter Speicherplatz in der
                        Auslagerungsdatei
                  - int DID_SW_SEARCHES
                  - int DID_SW_SEARCH_LEN
                        Anzahl und Gesamtlaenge der Suchvorgaenge nach
                        wiederverwendbaren Bloecken in der Auslagerungsdatei
                  - int DID_SW_F_SEARCHES
                  - int DID_SW_F_SEARCH_LEN
                        Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
                        Block, der frei gemacht werden kann.
                  - int DID_SW_COMPACT
                        TRUE wenn der Swapper im Compact-Modus laeuft
                  - int DID_SW_RECYCLE_FREE
                        TRUE wenn der Swapper gerade einen freien Block
                        wiederverwendet

            <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
                  - string DID_MEM_NAME
                        Der Name des Allokators: "sysmalloc", "smalloc",
                        "slaballoc"
                  - int DID_MEM_SBRK
                  - int DID_MEM_SBRK_SIZE
                        Anzahl und Groesse der Speicherbloecke, die vom
                        Betriebssystem angefordert wurden (smalloc, slaballoc)
                  - int DID_MEM_LARGE
                  - int DID_MEM_LARGE_SIZE
                  - int DID_MEM_LFREE
                  - int DID_MEM_LFREE_SIZE
                        Anzahl und Groesse der grossen allozierten bzw.
                        freien Bloecke (smalloc, slaballoc)
                  - int DID_MEM_LWASTED
                  - int DID_MEM_LWASTED_SIZE
                        Anzahl und Groesse der unbrauchbaren grossen
                        Speicherfragmente (smalloc, slaballoc)
                  - int DID_MEM_CHUNK
                  - int DID_MEM_CHUNK_SIZE
                        Anzahl und Groesse kleiner Speicherbloecke (chunk
                        blocks; smalloc, slaballoc)
                  - int DID_MEM_SMALL
                  - int DID_MEM_SMALL_SIZE
                  - int DID_MEM_SFREE
                  - int DID_MEM_SFREE_SIZE
                        Anzahl und groesse der allozierten bzw. freien
                        kleinen Speicherbloecke (smalloc, slaballoc)
                  - int DID_MEM_SWASTED
                  - int DID_MEM_SWASTED_SIZE
                        Anzahl und Groesse der unbrauchbar kleinen
                        Speicherfragmente (smalloc, slaballoc)
                  - int DID_MEM_MINC_CALLS
                  - int DID_MEM_MINC_SUCCESS
                  - int DID_MEM_MINC_SIZE
                        Anzahl Aufrufe von malloc_increment(), Anzahl der
                        erfolgreichen Aufrufe und die Groesse des auf diese
                        Art allozierten Speichers (smalloc, slaballoc)
                  - int DID_MEM_PERM
                  - int DID_MEM_PERM_SIZE
                        Anzahl und Groesse permanenter (non-GCable)
                        Allokationen (smalloc, slaballoc)
                  - int DID_MEM_CLIB
                  - int DID_MEM_CLIB_SIZE
                        Anzahl und Groesse der Allokationen durch Clib
                        Funktionen (nur smalloc, slaballoc mit SBRK_OK)
                  - int DID_MEM_OVERHEAD
                        Overhead fuer jede Allokation (smalloc, slaballoc)
                  - int DID_MEM_ALLOCATED
                        Der Speicher, der durch die Speicherverwaltung
                        alloziert wurde, inklusive den Overhead fuer die
                        Speicherverwaltung (smalloc, slaballoc)
                  - int DID_MEM_USED
                        Der Speicher, der durch den Driver belegt ist, ohne
                        den durch die Speicherverwaltung belegten Speicher
                        (smalloc, slaballoc)
                  - int DID_MEM_TOTAL_UNUSED
                        Der Speicher, der vom System zur Verfuegung gestellt,
                        aber vom Treiber nicht benoetigt wird.
                  - int DID_MEM_AVL_NODES          (smalloc, slaballoc)
                        Anzahl der AVL-Knoten, die zur Verwaltung der
                        freien grossen Speicherbloecke verwendet werden
                        (nur smalloc). Dieser Wert kann in Zukunft
                        wieder verschwinden.
                  - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
                        Detaillierte Statistiken des Allokators sofern
                        diese aktiviert wurden; 0 anderenfalls.

                        Dieser Wert kann in Zukunft wieder verschwinden.

                        Das Array enthaelt NUM+2 Eintraege, wobei NUM
                        Anzahl der verschiedenen 'kleinen'
                        Blockgroessen ist. Eintrag [NUM] beschreibt
                        die uebergrossen 'kleinen' Bloecke, Eintrag
                        [NUM+1] beschreibt summarisch die 'grossen'
                        Bloecke. Jeder Eintrag ist ein Array mit
                        diesen Feldern:

                        int DID_MEM_ES_MAX_ALLOC:
                          Maximale Anzahl allokierter Bloecke dieser
                          Groesse.

                        int DID_MEM_ES_CUR_ALLOC:
                          Derzeitige Anzahl allokierter Bloecke dieser
                          Groesse.
                          Current number of allocated blocks of this size.

                        int DID_MEM_ES_MAX_FREE:
                          Maximale Anzahl freier Bloecke dieser
                          Groesse.

                        int DID_MEM_ES_CUR_FREE:
                          Derzeitige Anzahl freier Bloecke dieser
                          Groesse.

                        float DID_MEM_ES_AVG_XALLOC:
                          Durchschnittliche Zahl von Allokationen pro
                          Sekunde.

                        float DID_MEM_ES_AVG_XFREE:
                          Durchschnittliche Zahl von Deallokationen pro
                          Sekunde.

                      Die Durchschnittsstatistiken schliessen interne
                      Umsortierungen der Blocklisten nicht ein.


        DINFO_TRACE    (7): Liefert die 'trace' Information aus dem
            Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
            ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
            oder ein druckbarer String. Wird <arg2> weggelasen entspricht
            dies DIT_CURRENT.

            <arg2> == DIT_CURRENT (0): Momentaner Call Trace
                   == DIT_ERROR   (1): Letzter Fehler Trace (caught oder
                        uncaught)
                   == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
                        gefangen werden konnte (uncaught)

            Die Information wird in Form eines Array uebergeben.

            Die Fehlertraces werden nur geaendert, wenn ein entsprechender
            Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
            Collection) geloescht. Nach einem Fehler, der nicht gefangen
            werden konnte (uncaught error), weisen beide Traces auf das
            gleiche Array, sodass der ==-Operator gilt.

            Wenn das Array mehr als ein Element enthaelt, ist das erste
            Element 0 oder der Name des Objekts, dessen heart_beat() den
            laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
            bezeichnen den Call Stack, beginnen mit der hoechsten
            aufgerufenen Funktion.

            Alle Eintraege im Array sind wiederum Arrays mit folgenden
            Elementen:
              - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
                    TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
                                           vorkommen)
                    TRACE_TYPE_SEFUN  (1): eine simul-efun
                    TRACE_TYPE_EFUN   (2): eine Efun Closure
                    TRACE_TYPE_LAMBDA (3): eine lambda Closure
                    TRACE_TYPE_LFUN   (4): eine normale Lfun
              - int[TRACE_NAME]
                    _TYPE_EFUN    : entweder der Name der Funktion oder der
                                    Code einer Operator-Closure
                    _TYPE_LAMBDA  : die numerische Lambda-ID
                    _TYPE_LFUN    : der Name der Lfun
              - string[TRACE_PROGRAM]:  Der Name des Programms mit dem Code
              - string[TRACE_OBJECT]:   Der Name des Objekts, fuer das der
                                        Code ausgefuehrt wurde
              - int[TRACE_LOC]:
                    _TYPE_LAMBDA  : Der Offset des Programms seit Beginn des
                                    Closure-Codes
                    _TYPE_LFUN    : Die Zeilennummer.

            <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
                momentanen Call Trace als druckbarer String.

            <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
                dem Control Stack (Rekursionstiefe).

        DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
            zurueck. Diese Nummer wird fuer jeden vom driver initiierten
            Aufruf von LPC-Code erhoeht, also bei Aufruf von:
              - Kommandos (die per add_action hinzugefuegt wurden)
              - heart_beat, reset, clean_up
              - Aufrufe durch call_out oder input_to
              - master applies, die auf externe Ereignisse zurueckgehen
              - driver hooks genauso
              - Rueckrufen von send_erq
              - logon in interaktiven Objekten

           Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
           bestimmte Aktionen mehrfach innerhalb eines heart_beat()
           ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
           Zeitstempel zur Sortierung zur Sortierung von Ereignissen.

           Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
           auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.


GESCHICHTE
        Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
            nur auszugeben.
        DINFO_DUMP wurde in 3.2.7 eingefuehrt.
        LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
            DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
            verschiedenen DID_MEM_WASTED Statistiken.
        LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
            DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
            die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
            DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
            DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
            und die found / added / collision Stringstatistiken.
        LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
            entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
            DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
            DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
            fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
            die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
            bzw. _SLOTS.
        LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
            hinzu.
        LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
            hinzu.
        LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
        LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.

SIEHE AUCH
        trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
