Anzeige:
Anzeige:
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

Fehlersuche in Scripten

Nachdem wir nun die ersten kleinen Scripte geschrieben haben, sollte wir uns darum kümmern wie man Fehler in den Scripten findet. Es gibt zwei Arten von Fehlern, das sind Syntaxfehler und Logigfehler. Syntaxfehler können sein: Eine vergessene Klammer, ein falsch geschriebener Befehl oder ein falscher Parameter. Solche Fehler sind meist sehr leicht zu finden weil mIRC bei den meisten eine Fehlermeldung erzeugt. Diese Fehlermeldung sieht in etwa wie folgt aus: 
/if: invalid format (line 2, boardtest.ini) 
Diese Fehlermeldung hält reichlich Informationen für uns bereit. In der Klammer steht die Zeile (line 2) in der ein Fehler auftrat und die Datei (boardtest.ini) in der das Script ist. Desweiteren erfahren wir das es in der Zeile eine /if Abfrage gibt welche ein falsches Format hat. Damit lässt sich der Fehler also ziemlich leicht finden. Eine Möglichkeit fehlende geschweifte Klammern zu finden ist der Button rechts oben im Editor mit den zwei gescheiften Klammern. Ausserdem erzeugt eine Klammernpaar im Code immer einen Einzug, so wie er auch hier im Tutorial gezeigt wird. Somit lassen sich fehlende Klammern auch leicht durch die fehlenden Einzüge im Scriptcode entdecken. Das wäre eigentlich alles zu Syntaxfehlern.

 

Logigfehler finden

Bei Logigfehler ist die Suche schon etwas aufwendiger. Dazu nehmen wir als erstes mal ein Bespielscript welches wir später mit /echo Befehlen ausstatten um den Ablauf in allen Einzelheiten zu prüfen.

on 1:TEXT:!tipp:#Testraum:{ if ($read(Mitglieder.txt,s,$nick)) { var %tipp $read(Tipps.txt) msg $chan Dein Tipp lautet: %tipp } }

Dies ist eine simple Funktion die im Channel #Testraum Tipps an Mitglieder ausgibt. Wie die Textdateien genau aussehen oder die Ausgabe dieser Funktion muss uns dabei nicht interessieren. Wir wollen aber nun wissen ob die Funktion richtig läuft oder warum nicht. Dazu bauen wir in die Funktion diverse /echo Befehle ein, um die Zustände und Abläufe genau zu prüfen. Hier jetzt also das gleiche Script mit den /echo Befehlen.

on 1:TEXT:!tipp:#Testraum:{ echo -s Tipps triggert! echo -s Mitgliedstatus ist: $read(Mitglieter.txt,s,$nick) if ($read(Mitglieder.txt,s,$nick)) { echo -s Mitgliedtest bestanden! var %tipp $read(Tipps.txt) echo -s Variable tipp ist: %tipp msg $chan Dein Tipp lautet: %tipp } }

Nun können wir genau sehen wie das Script abläuft und welche Zustände die Identifer und Variablen haben. Ich erkläre nun die /echo Befehle im einzelnen. Alle /echo Meldungen werden im Statusfenster ausgegeben. Liest man die erste Meldung (Tipps triggert!) weiss man das der Remote ausgelöst wurde. Die zweite und die dritte Meldung (Mitgliedstatus ist:...; Mitgliedtest bestanden!) könnte man auch abwechselnd einsetzen. Bei der letzten Meldung (Variable tipp ist:...) wird der Wert der Variablen ausgegeben also der Tipp der auch im Raum erscheinen sollte. Ich hoffe es ist euch klar geworden warum ich die einzelnen Echos eingebaut habe. Ihr müsst in der Praxis wissen wo es Sinn macht diese /echo Befehle einzubauen um die Zustände und Werte zu prüfen. Ansonsten ist es wichtig das Script nicht nur auf richtigen Ablauf zu prüfen, sondern auch auf falschen. Das heisst das auch mal ein Nichtmitglied !tipp eingeben sollte um zu sehen ob das Script nicht ausgeführt wird. Dieser Test ist mindestens genau so wichtig wie die richtige Ausführung zu prüfen.

So viel zur Fehlerprüfung. Und verlasst euch darauf ihr werdet Fehler machen, wie jeder Andere auch einschliesslich mir. Deshalb ist die Fehlersuche so wichtig und auch das lernen wie man Scripte richtig testet.