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