blob: 7b0b91684d4b1bb2fcbd3751e16db419607f2e81 [file] [log] [blame]
Der Fehlerteufel
================
die Mudlib speichert die aufgetretenen Fehler und Warnungen. Dabei werden
folgende Daten mitgespeichert:
- Zeit (erstes Mal, zuletzt)
- In welchem Objekt und welchem Programm der Fehler war
- Zeilenr.
- Fehlermeldung
- Objekt, dessen Heartbeat, den Fehler ausloeste
- this_interactive() bzw. this_player()
- den Befehl, den TI eingegeben hat
- das Environment von TI oder TP
- wie oft der Fehler schon auftrat
- der Backtrace
- ob der Fehler in einem catch() auftrat
Zusaetzlich werden von Spielern per "bug", "fehler" oder "sonnenfehler"
gemeldete Fehler gespeichert.
Der Fehlerteufel dient nun dazu, sich diese Infos darstellen zu lassen. Nach
dem Clonen von /obj/tools/fehlerteufel habt ihr folgende Moeglichkeiten:
- fehlerliste <auswahl s. Kommando fehlermodus>
Dieser Befehl stellt euch eine Liste aller bekannten Fehler dar, die unter
einer UID auftraten, fuer die ihr zustaendig seid (z.B. "zesstra",
"d.inseln.zesstra", "GUILD.magierpack", s. auch QueryUIDsForWizard()). Die
Liste umfasst die eindeutige Fehler-ID, den Ladenamen des fehlerausloesenden
Objekts und die UID.
Je nach Argument werden div. Fehler oder Warnungen ausgegeben. Wird keins
von beiden angegeben, wird je nach Einstellung von 'fehlermodus' aufgelistet.
- fehlerabfrage <id>
Hiermit lassen sich die Detail-Informationen zu <id> anzeigen. <id> bekommt
ihr entweder aus "fehlerliste" oder von -debug/-entwicklung/-warnungen, dort
werden diese IDs mit ausgegeben. Ohne Angabe der <id> wird der letzte
betrachtete Fehler ausgegeben.
Neben der numerischen ID ist hierbei auch die Hash-ID moeglich.
Es kann auch der Ladename eines Objekts angegeben werden, dann werden alle
zu diesem Objekt gehoerenden Eintraege auf einmal angezeigt, z.B.
fehlerabfrage /d/unterwelt/raeume/wald3
Der Ladename muss mit einem / beginnen.
- fehlerloeschen <id>
Fehler mit der ID <id> zum Loeschen markieren (z.B. wenn gefixt). Die
eigentlich Loeschung findet innerhalb von 24h statt. Die Fehler werden nach
diesem Befehl nicht mehr in der Fehlerliste angezeigt. Ohne Angabe der <id>
wird der letzte benutzte Fehler geloescht.
Wiederholt man den Befehl, wird die Loeschmarkierung wieder entfernt.
Es kann auch der Ladename eines Objekts angegeben werden, dann werden alle
zu diesem Objekt gehoerenden Eintraege auf einmal geloescht, z.B.
fehlerloeschen d/unterwelt/raeume/wald3
- fehlereingabe <objekt>
Hiermit laesst sich per Hand ein Eintrag fuer das angegebene Objekt im
Fehlerteufel erstellen. Das Objekt kann mit einer seiner IDs oder seinem
vollstaendigen Objektnamen angegeben werden. Wird kein Objekt angegeben,
wird die Umgebung des Magiers als Objekt genutzt. Bsp:
fehlereingabe seil
fehlereingaeb /obj/seil#5635
- fehlerrefresh
Der Fehlerteufel hat einen Zwischenspeicher fuer die Fehlerliste. Dieser
Befehl loescht diesen Zwischenspeicher und holt die Fehlerliste neu.
- fehlerfilter
Hiermit laesst sich ein Filter fuer UIDs einstellen. (s.u.) Ist er aktiv,
werden per 'fehlerliste' keine Fehler mehr angezeigt, die im Filter
eingetragen wurden.
- fehlermodus <fehler|warnungen>
Einstellen, welche Arten von Eintraegen im Fehlerteufel vom Kommando
'fehlerliste' ausgegeben werden soll:
laufzeitfehler: Laufzeitfehler werden ausgegeben (-debug, -entwicklung)
laufzeitwarnungen: Laufzeitwarnungen werden ausgegeben (-warnungen)
ladezeitfehler: Fehler beim Laden eines Objekts werden ausgegeben
ladezeitwarnungen: Warnungen beim Laden eines Objekts werden ausgegeben
fehlerhinweise: Fehler, die Spieler/Magier abgesetzt haben
ideen: Ideen, die Spieler/Magier abgesetzt haben
typos: Typos, die Spieler/Magier abgesetzt haben
md: Fehlende Details, die Spieler/Magier abgesetzt haben
fehler: alle moeglichen Fehler werden ausgegeben
warnungen: alle moeglichen Warnungen werden ausgegeben
alle: alle Fehler + Warnungen werden ausgegeben
Ohne Argument: aktuellen Modus ausgeben.
- fehlermonitor
Hiermit lassen sich UIDs angeben, die man zusaetzlich zu den eigenen
auch noch beobachten will.
Hierbei sind auch einige UID-Aliase moeglich, z.B. 'magier', 'region',
'p.service', 'p' oder 'gilde'.
BTW: nach Aenderung dieser Liste sollte man "fehlerrefresh" aufrufen.
- flock <id> <bemerkung>
So markierte Fehler werden nicht mehr automatisch (nach 31 Tagen ohne
Aenderung) geloescht. ABER: Solcherart gesperrte Fehler werden momentan
_niemals_ automatisch geloescht, deshalb denkt bitte daran, sie entweder
selber zu loeschen oder sie wieder freizugeben, wenn ihr sie nicht mehr
braucht.
- funlock <id> <bemerkung>
Gibt den Fehler wieder zum automatischen Loeschen frei.
- ffix <id> <bemerkung zum fix>
Fehler wird als "gefixt" markiert und eine Mail an alle fuer das buggende
Objekte zustaendigen Magier geschickt (soweit bekannt). Anschliessend
werden die Fehler vom Fehlerteufel nicht mehr angezeigt.
Im Falle von durch Spieler berichteten Fehlern wird dem jeweiligen Spieler
beim Fixen ebenfalls eine Mail geschickt.
Als gefixt markierte Fehler werden nach einiger Zeit geloescht.
Es empfiehlt sich fuer eigene Fehler, diese nach Beheben einfach zu
Loeschen, wenn man keine Mail ueber den Fehler erhalten moechte.
- funfix <id> <bemerkung warum der Bugfix scheisse war ;)>
Wenn ihr bis zu der "Archivierung" gefixter Fehler feststellt, dass ihr den
Fehler wohl doch nicht gefixt habt, koennt ihr das wieder rueckgaengig
machen.
- fnotiz <id> <bemerkung>
Wenn euch an so einem Fehler was auffaellt oder ihr eine Idee habt, koennt ihr
das so also "verewigen". Notizen kann jeder Magier an Fehler dranhaengen,
dafuer braucht man keine besonderen (Schreib)Rechte. Die Notizen werden vom
Fehlerteufel ausgegeben und stehen auch im CHANGELOG.
Anmerkung: Es gibt (absichtlich) keine Moeglichkeit, Notizen wieder zu
loeschen.
- fuebertrage <id> <newuid> <bemerkung>
Wenn ihr einen Fehler habt, fuer den ihr nicht zustaendig seid, weil der
Ursprung des Fehlers nicht in einem eurer Files liegt, koennt ihr diesen
Fehler an eine andere UID mit einer Bemerkung uebertragen. Danach ist der
Magier von <newuid> zustaendig und hat Schreibrechte auf den Fehler.
<newuid> kann z.B. sowas wie 'd.inseln.zesstra' oder 'zesstra' sein. Liegt
der Fehler in einem Objekt in /d/, solltet ihr auf jeden Fall
d.region.magier benutzen, damit ggf. der RM der Region auch zustaendig wird.
UID-Filter:
a) fehlerfilter an
Schaltet den Filter ein
b) fehlerfilter aus
schaltet den Filter aus
c) fehlerfilter alle
schaltet den Filter ein _und_ schreibt alle UIDs, fuer die man zustaendig
ist, in den Filter, es wird dann nichts mehr angezeigt.
d) fehlerfilter keine
schaltet den Filter ein _und_ loescht den Filter, d.h. es wird trotzdem
erstmal noch nix gefiltert..
e) fehlerfilter +zesstra +d.inseln.zesstra -d.ebene.zesstra
Fuegt "zesstra" und "d.inseln.zesstra" den aktuellen Filtereinstellungen
hinzu und loescht "d.ebene.zesstra" aus dem Filter.
Beliebige Kombinationen moeglich. Ohne - oder + am Anfang wird jeweils
invertiert, also hinzugefuegt, wenn noch nicht drin und entfernt, wenn
schon in der Liste.
Fehler-Monitor:
a) fehlermonitor keine
Loescht alle beobachteten UIDs
b) fehlermonitor +atamur -d.polar.atamur
Fuegt "atamur" der Beobachtungsliste hinzu und entfernt "d.polar.atamur".
Beliebige Kombinationen moeglich. Ohne - oder + am Anfang wird jeweils
invertiert, also hinzugefuegt, wenn noch nicht drin und entfernt, wenn
schon in der Liste.
Zugriffsrechte:
- Lesen und Anhaengen (Notizen, Loeschsperren) darf jeder Magier
- Loeschen, Fixen und UID neu zuordnen duerfen fuer die UID zustaendige Magier
- Fixes zurueckziehen darf jeder Magier (solange issue nicht expired)
- EM+ duerfen alles
Randbemerkung:
Moechte man nicht, dass vom Magier selbst ausgeloeste Fehler in /players/
protokolliert werden, kann der Magier _in sich_ die Prop P_DONT_LOG_ERRORS
(aus /secure/errord.h) auf 1 setzen.
ACHTUNG: das bedeutet, dass ueber Fehler keine Informationen mehr
vorliegen, die beim Fixen helfen koennen. Bedenkt das bitte, wenn ihr die
Prop setzt.
SIEHE AUCH:
QueryUIDsForWizard(), QueryWizardForUID()