blob: 02e02b887ed19e5da8e94cc44ed6c79953f021e0 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2debug_info()
3************
4
5
6DEPRECATED
7==========
8
9
10SYNOPSIS
11========
12
13 #include <debug_info.h>
14
15 mixed debug_info(int flag)
16 mixed debug_info(int flag, mixed arg)
17 mixed debug_info(int flag, mixed arg2, mixed arg3)
18
19
20BESCHREIBUNG
21============
22
23 Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
24 des Treibers. <flag> kann dabei folgende in debug_info.h definierte
25 Werte enthalten:
26
27 DINFO_OBJECT (0): Angezeigt werden Informationen zum in <arg>
28 spezifizierten Objekt, zum Beispiel heart_beat,
29 enable_commands etc. Die Funktion liefert 0 zurueck.
30
31 DINFO_MEMORY (1): Angezeigt werden Informationen zu
32 Speicherbelegung und -ausnutzung des in <arg> spezifizierten
33 Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
34 Objektgroesse etc. Die Funktion liefert 0 zurueck.
35
36 DINFO_OBJLIST (2): debug_info() liefert Objekte aus der globalen
37 Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
38 Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
39 ist, das n-te Element. Ist <arg2> ein Objekt, werden die
40 nachfolgenden Objekte in der Objektliste zurueck geliefert.
41 Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
42 gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
43 Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
44 ein Array mit hoechstens m Elementen zurueck geliefert. Auf
45 diese Weise kann ein Array mit saemtlichen Objekten im Spiel
46 erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
47 entsprechende maximale Arraygroesse vorausgesetzt).
48
49 DINFO_MALLOC (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
50 Es muessen keine weiteren Argumente angegeben werden.
51
52 DINFO_STATUS (4): Angezeigt wird die Statusinformation des Drivers.
53 Optional kann das Argument <arg> die Werte 0, "tables", "swap",
54 "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
55 Das Resultat ist ein druckbarer String, der die Statusinformation
56 enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.
57
58 DINFO_DUMP (5): Die durch <arg2> angeforderte Information wird
59 in ein File geschrieben, das man mit <arg3> angeben kann. Wird
60 <arg3> nicht angegeben, wird eine Standarddatei verwendet.
61 debug_info() ueberprueft mittels master->valid_write(), ob es
62 das File schreiben kann. Falls bereits eine entsprechende Datei
63 existiert, wird diese ueberschrieben. Die Funktion liefert 1
64 bei Erfolg, 0 sonst.
65
66 <arg2> == "objects": liefert Informationen ueber alle Objekte im
67 Spiel und schreibt diese standardmaessig in die Datei
68 /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
69 Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
70 jeweils folgende Informationen aufgelistet sind:
71 - Name des Objekts (object_name)
72 - Groesse im Speicher, gemeinsamer genutzter Speicher nur
73 einmal gezaehlt
74 - Groesse im Speicher, wenn es keine gemeinsam genutzte
75 Daten geben wuerde
76 - Anzahl Referenzen
77 - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
78 - der Name der Umgebung oder '--', wenn das Objekt keine
79 Umgebung hat
80 - in Klammern die Anzahl der durch das Objekt verursachten
81 Verarbeitungsschritten (execution ticks)
82 - der Swap-Status:
83 > nichts, wenn das Objekt nicht geswapt wurde
84 > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
85 > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
86 > 'SWAPPED', wenn beide geswapt wurden
87 - die Zeit, zu der das Objekt geladen wurde.
88
89 <arg2> == "destructed": liefert Informationen ueber alle
90 zerstoerten Objekte und schreibt diese standardmaessig in
91 die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
92 uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
93 in der jeweils folgende Informationen aufgelistet sind:
94 - Name des Objekts (object_name)
95 - Anzahl der Referenzen
96 - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
97 zerstoert wurde, nichts wenn es bereits fruehre zerstoert
98 worden war.
99
100 <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
101 opcodes. Standardmaessig wird in die Datei /OPC_DUMP
102 geschrieben. valid_write() wird 'opcdump' uebergeben.
103
104 <arg2> == "memory": liefert eine Liste aller allokierten
105 Speicherbloecke.
106 Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
107 valid_write() wird 'memdump' uebergeben. Existiert die
108 Datei bereits, werden die neuen Daten angehaengt.
109 Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
110 wird keine Datei geschrieben und immer 0 zurueckgegeben.
111 Diese Funktion ist am nuetzlichsten wenn der Allokator
112 mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
113 wurde.
114
115
116 DINFO_DATA (6): Liefert Rohdaten ueber gewisse, durch <arg2>
117 spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
118 ein Array mit der Information oder 0, falls <arg2> keinen
119 gueltigen Wert enthalten hat.
120 Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
121 Resultat-Array, liefert die Funktion nur das entsprechende
122 Element zurueck.
123 Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
124 DID_MALLOC.
125
126 <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
127 Information. Folgende Indizes sind definiert:
128 - int DID_ST_BOOT_TIME
129 die Zeit (time()), zu der das Mud gestartet wurde
130 - int DID_ST_ACTIONS
131 - int DID_ST_ACTIONS_SIZE
132 die Anzahl und Groesse im Speicher der allozierten
133 Actions.
134 - int DID_ST_SHADOWS
135 - int DID_ST_SHADOWS_SIZE
136 Anzahl und Groesse im Speicher aller allozierten
137 Shadows.
138 - int DID_ST_OBJECTS
139 - int DID_ST_OBJECTS_SIZE
140 Anzahl und Groesse im Speicher aller Objekte.
141 - int DID_ST_OBJECTS_SWAPPED
142 - int DID_ST_OBJECTS_SWAP_SIZE
143 Anzahl und Groesse im Speicher der geswapten
144 Variablenbloecke der Objekte
145 - int DID_ST_OBJECTS_LIST
146 Anzahl Objekte in der Objektliste
147 - int DID_ST_OBJECTS_NEWLY_DEST
148 Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
149 die in diesem Verarbeitungszyklus zerstoert wurden)
150 - int DID_ST_OBJECTS_DESTRUCTED
151 Anzahl der zerstoerten, aber noch immer referenzierten
152 Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
153 bereits gezaehlten.
154 - int DID_ST_OBJECTS_PROCESSED
155 Anzahl der gelisteten Objekte, die im letzten
156 Verarbeitungszyklus verarbeitet wurden.
157 - float DID_ST_OBJECTS_AVG_PROC
158 Durchschnittlicher Anteil der pro Zyklus verarbeiteten
159 Objekte, ausgedrueckt in Prozent (0 .. 1.0)
160 - int DID_ST_OTABLE
161 Anzahl eingetragener Objekte in der Objekttabelle
162 - int DID_ST_OTABLE_SLOTS
163 Anzahl von Hashplaetzen, die von jeder Objekttabelle
164 bereitgestellt werden
165 - int DID_ST_OTABLE_SIZE
166 Durch die Objekttabelle belegter Speicher
167 - int DID_ST_HBEAT_OBJS
168 Anzahl Objekte mit einem heart_beat()
169 - int DID_ST_HBEAT_CALLS
170 Anzahl aktiver heart_beat() Zyklen bisher (d.h.
171 Zyklen, in denen mindestens eine heart_beat() Funktion
172 aufgerufen wurde)
173 - int DID_ST_HBEAT_CALLS_TOTAL
174 Gesamtzahl von heart_beat() Zyklen bisher.
175 - int DID_ST_HBEAT_SLOTS
176 - int DID_ST_HBEAT_SIZE
177 Anzahl und Groesse aller allozierten Eintraege in der
178 heart_beat() Tabelle.
179 - int DID_ST_HBEAT_PROCESSED
180 Anzahl heart_beat()s im letzten Zyklus
181 - float DID_ST_HBEAT_AVG_PROC
182 Durchschnittlicher Anteil der pro Zyklus aufgerufenen
183 heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
184 - int DID_ST_CALLOUTS
185 Anzahl und Groesse aller laufenden call_out()s
186 - int DID_ST_ARRAYS
187 - int DID_ST_ARRAYS_SIZE
188 Anzahl und Groesse aller Arrays
189 - int DID_ST_MAPPINGS
190 - int DID_ST_MAPPINGS_SIZE
191 Anzahl und Groesse aller Mappings
192 - int DID_ST_PROGS
193 - int DID_ST_PROGS_SIZE
194 Anzahl und Groesse aller Programme
195 - int DID_ST_PROGS_SWAPPED
196 - int DID_ST_PROGS_SWAP_SIZE
197 Anzahl und Groesse der geswapten Programme
198 - int DID_ST_USER_RESERVE
199 - int DID_ST_MASTER_RESERVE
200 - int DID_ST_SYSTEM_RESERVE
201 Momentane Groesse der drei Speicherreserven
202 - int DID_ST_ADD_MESSAGE
203 - int DID_ST_PACKETS
204 - int DID_ST_PACKET_SIZE
205 Anzahl Aufrufe von add_message(), Anzahl und Groesse
206 der versendeten Pakete.
207 Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
208 liefern alle drei Werte immer -1 zurueck.
209 - int DID_ST_APPLY
210 - int DID_ST_APPLY_HITS
211 Anzahl Aufrufen von apply_low(), und wie viele davon
212 Cache-Treffer waren. Wenn der Driver nicht mit
213 APPLY_CACHE_STAT kompiliert wurde, liefern beide
214 Werte immer -1.
215 - int DID_ST_STRINGS
216 - int DID_ST_STRING_SIZE
217 Anzahl unterschiedlicher Strings in der Stringtabelle,
218 sowie ihre Groesse
219 - int DID_ST_STR_TABLE_SIZE
220 Groesse der String Tabelle
221 - int DID_ST_STR_REQ
222 - int DID_ST_STR_REQ_SIZE
223 Gesamte Anzahl von String Allokationen, und ihre
224 Groesse
225 - int DID_ST_STR_SEARCHES
226 - int DID_ST_STR_SEARCH_LEN
227 Anzahl Suchvorgaenge in der Stringtabelle und die
228 Gesamtlaenge des Suchstrings
229 - int DID_ST_STR_FOUND
230 Anzahl erfolgreicher Suchvorgaenge
231 - int DID_ST_STR_ENTRIES
232 Anzahl Eintraege (Hash Ketten) in der String Tabelle
233 - int DID_ST_STR_ADDED
234 Anzahl zur String Tabelle bisher hinzugefuegter
235 Strings
236 - int DID_ST_STR_DELETED
237 Anzahl aus der String Tabelle bisher geloeschter
238 Strings
239 - int DID_ST_STR_COLLISIONS
240 Anzahl zu einer existierenden Hash Kette hinzugefuegte
241 Strings
242 - int DID_ST_RX_CACHED
243 Anzahl gecacheter regulaerer Ausdruecke (regular
244 expressions)
245 - int DID_ST_RX_TABLE
246 - int DID_ST_RX_TABLE_SIZE
247 Anzahl Plaetze in der Regexp Cache Tabelle und
248 Speicherbedarf der gecacheten Ausdruecke
249 - int DID_ST_RX_REQUESTS
250 Anzahl Anfragen fuer neue regexps
251 - int DID_ST_RX_REQ_FOUND
252 Anzahl gefundener regexps in der regexp Cache Tabelle
253 - int DID_ST_RX_REQ_COLL
254 Anzahl angefragter regexps, die mit einer bestehenden
255 regexp kollidierten
256 - int DID_ST_MB_FILE
257 Die Groesse des 'File' Speicherpuffers
258 - int DID_ST_MB_SWAP
259 Die Groesse des 'Swap' Speicherpuffers
260
261 <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
262 - int DID_SW_PROGS
263 - int DID_SW_PROG_SIZE
264 Anzahl und Groesse der geswappten Programmbloecke
265 - int DID_SW_PROG_UNSWAPPED
266 - int DID_SW_PROG_U_SIZE
267 Anzahl und Groesse der nicht geswappten Bloecke
268 - int DID_SW_VARS
269 - int DID_SW_VAR_SIZE
270 Anzahl und Groesse der geswappten Variablenbloecke
271 - int DID_SW_FREE
272 - int DID_SW_FREE_SIZE
273 Anzahl und Groesse der freien Bloecke in der
274 Auslagerungsdatei
275 - int DID_SW_FILE_SIZE
276 Groesse der Auslagerungsdatei
277 - int DID_SW_REUSED
278 Gesamter wiederverwendeter Speicherplatz in der
279 Auslagerungsdatei
280 - int DID_SW_SEARCHES
281 - int DID_SW_SEARCH_LEN
282 Anzahl und Gesamtlaenge der Suchvorgaenge nach
283 wiederverwendbaren Bloecken in der Auslagerungsdatei
284 - int DID_SW_F_SEARCHES
285 - int DID_SW_F_SEARCH_LEN
286 Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
287 Block, der frei gemacht werden kann.
288 - int DID_SW_COMPACT
289 TRUE wenn der Swapper im Compact-Modus laeuft
290 - int DID_SW_RECYCLE_FREE
291 TRUE wenn der Swapper gerade einen freien Block
292 wiederverwendet
293
294 <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
295 - string DID_MEM_NAME
296 Der Name des Allokators: "sysmalloc", "smalloc",
297 "slaballoc"
298 - int DID_MEM_SBRK
299 - int DID_MEM_SBRK_SIZE
300 Anzahl und Groesse der Speicherbloecke, die vom
301 Betriebssystem angefordert wurden (smalloc, slaballoc)
302 - int DID_MEM_LARGE
303 - int DID_MEM_LARGE_SIZE
304 - int DID_MEM_LFREE
305 - int DID_MEM_LFREE_SIZE
306 Anzahl und Groesse der grossen allozierten bzw.
307 freien Bloecke (smalloc, slaballoc)
308 - int DID_MEM_LWASTED
309 - int DID_MEM_LWASTED_SIZE
310 Anzahl und Groesse der unbrauchbaren grossen
311 Speicherfragmente (smalloc, slaballoc)
312 - int DID_MEM_CHUNK
313 - int DID_MEM_CHUNK_SIZE
314 Anzahl und Groesse kleiner Speicherbloecke (chunk
315 blocks; smalloc, slaballoc)
316 - int DID_MEM_SMALL
317 - int DID_MEM_SMALL_SIZE
318 - int DID_MEM_SFREE
319 - int DID_MEM_SFREE_SIZE
320 Anzahl und groesse der allozierten bzw. freien
321 kleinen Speicherbloecke (smalloc, slaballoc)
322 - int DID_MEM_SWASTED
323 - int DID_MEM_SWASTED_SIZE
324 Anzahl und Groesse der unbrauchbar kleinen
325 Speicherfragmente (smalloc, slaballoc)
326 - int DID_MEM_MINC_CALLS
327 - int DID_MEM_MINC_SUCCESS
328 - int DID_MEM_MINC_SIZE
329 Anzahl Aufrufe von malloc_increment(), Anzahl der
330 erfolgreichen Aufrufe und die Groesse des auf diese
331 Art allozierten Speichers (smalloc, slaballoc)
332 - int DID_MEM_PERM
333 - int DID_MEM_PERM_SIZE
334 Anzahl und Groesse permanenter (non-GCable)
335 Allokationen (smalloc, slaballoc)
336 - int DID_MEM_CLIB
337 - int DID_MEM_CLIB_SIZE
338 Anzahl und Groesse der Allokationen durch Clib
339 Funktionen (nur smalloc, slaballoc mit SBRK_OK)
340 - int DID_MEM_OVERHEAD
341 Overhead fuer jede Allokation (smalloc, slaballoc)
342 - int DID_MEM_ALLOCATED
343 Der Speicher, der durch die Speicherverwaltung
344 alloziert wurde, inklusive den Overhead fuer die
345 Speicherverwaltung (smalloc, slaballoc)
346 - int DID_MEM_USED
347 Der Speicher, der durch den Driver belegt ist, ohne
348 den durch die Speicherverwaltung belegten Speicher
349 (smalloc, slaballoc)
350 - int DID_MEM_TOTAL_UNUSED
351 Der Speicher, der vom System zur Verfuegung gestellt,
352 aber vom Treiber nicht benoetigt wird.
353 - int DID_MEM_AVL_NODES (smalloc, slaballoc)
354 Anzahl der AVL-Knoten, die zur Verwaltung der
355 freien grossen Speicherbloecke verwendet werden
356 (nur smalloc). Dieser Wert kann in Zukunft
357 wieder verschwinden.
358 - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
359 Detaillierte Statistiken des Allokators sofern
360 diese aktiviert wurden; 0 anderenfalls.
361
362 Dieser Wert kann in Zukunft wieder verschwinden.
363
364 Das Array enthaelt NUM+2 Eintraege, wobei NUM
365 Anzahl der verschiedenen 'kleinen'
366 Blockgroessen ist. Eintrag [NUM] beschreibt
367 die uebergrossen 'kleinen' Bloecke, Eintrag
368 [NUM+1] beschreibt summarisch die 'grossen'
369 Bloecke. Jeder Eintrag ist ein Array mit
370 diesen Feldern:
371
372 int DID_MEM_ES_MAX_ALLOC:
373 Maximale Anzahl allokierter Bloecke dieser
374 Groesse.
375
376 int DID_MEM_ES_CUR_ALLOC:
377 Derzeitige Anzahl allokierter Bloecke dieser
378 Groesse.
379 Current number of allocated blocks of this size.
380
381 int DID_MEM_ES_MAX_FREE:
382 Maximale Anzahl freier Bloecke dieser
383 Groesse.
384
385 int DID_MEM_ES_CUR_FREE:
386 Derzeitige Anzahl freier Bloecke dieser
387 Groesse.
388
389 float DID_MEM_ES_AVG_XALLOC:
390 Durchschnittliche Zahl von Allokationen pro
391 Sekunde.
392
393 float DID_MEM_ES_AVG_XFREE:
394 Durchschnittliche Zahl von Deallokationen pro
395 Sekunde.
396
397 Die Durchschnittsstatistiken schliessen interne
398 Umsortierungen der Blocklisten nicht ein.
399
400
401 DINFO_TRACE (7): Liefert die 'trace' Information aus dem
402 Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
403 ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
404 oder ein druckbarer String. Wird <arg2> weggelasen entspricht
405 dies DIT_CURRENT.
406
407 <arg2> == DIT_CURRENT (0): Momentaner Call Trace
408 == DIT_ERROR (1): Letzter Fehler Trace (caught oder
409 uncaught)
410 == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
411 gefangen werden konnte (uncaught)
412
413 Die Information wird in Form eines Array uebergeben.
414
415 Die Fehlertraces werden nur geaendert, wenn ein entsprechender
416 Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
417 Collection) geloescht. Nach einem Fehler, der nicht gefangen
418 werden konnte (uncaught error), weisen beide Traces auf das
419 gleiche Array, sodass der ==-Operator gilt.
420
421 Wenn das Array mehr als ein Element enthaelt, ist das erste
422 Element 0 oder der Name des Objekts, dessen heart_beat() den
423 laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
424 bezeichnen den Call Stack, beginnen mit der hoechsten
425 aufgerufenen Funktion.
426
427 Alle Eintraege im Array sind wiederum Arrays mit folgenden
428 Elementen:
429 - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
430 TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
431 vorkommen)
432 TRACE_TYPE_SEFUN (1): eine simul-efun
433 TRACE_TYPE_EFUN (2): eine Efun Closure
434 TRACE_TYPE_LAMBDA (3): eine lambda Closure
435 TRACE_TYPE_LFUN (4): eine normale Lfun
436 - int[TRACE_NAME]
437 _TYPE_EFUN : entweder der Name der Funktion oder der
438 Code einer Operator-Closure
439 _TYPE_LAMBDA : die numerische Lambda-ID
440 _TYPE_LFUN : der Name der Lfun
441 - string[TRACE_PROGRAM]: Der Name des Programms mit dem Code
442 - string[TRACE_OBJECT]: Der Name des Objekts, fuer das der
443 Code ausgefuehrt wurde
444 - int[TRACE_LOC]:
445 _TYPE_LAMBDA : Der Offset des Programms seit Beginn des
446 Closure-Codes
447 _TYPE_LFUN : Die Zeilennummer.
448
449 <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
450 momentanen Call Trace als druckbarer String.
451
452 <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
453 dem Control Stack (Rekursionstiefe).
454
455 DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
456 zurueck. Diese Nummer wird fuer jeden vom driver initiierten
457 Aufruf von LPC-Code erhoeht, also bei Aufruf von:
458 - Kommandos (die per add_action hinzugefuegt wurden)
459 - heart_beat, reset, clean_up
460 - Aufrufe durch call_out oder input_to
461 - master applies, die auf externe Ereignisse zurueckgehen
462 - driver hooks genauso
463 - Rueckrufen von send_erq
464 - logon in interaktiven Objekten
465
466 Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
467 bestimmte Aktionen mehrfach innerhalb eines heart_beat()
468 ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
469 Zeitstempel zur Sortierung zur Sortierung von Ereignissen.
470
471 Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
472 auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.
473
474
475GESCHICHTE
476==========
477
478 Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
479 nur auszugeben.
480 DINFO_DUMP wurde in 3.2.7 eingefuehrt.
481 LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
482 DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
483 verschiedenen DID_MEM_WASTED Statistiken.
484 LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
485 DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
486 die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
487 DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
488 DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
489 und die found / added / collision Stringstatistiken.
490 LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
491 entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
492 DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
493 DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
494 fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
495 die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
496 bzw. _SLOTS.
497 LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
498 hinzu.
499 LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
500 hinzu.
501 LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
502 LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.
503
504
505SIEHE AUCH
506==========
507
508 trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)