War3err – Mappedia

War3err

Aus Mappedia
Wechseln zu: Navigation, Suche

war3err ist eine Art integrierter Debugger für Warcraft 3 und Bestandteil der Jass NewGen Pack-Werkzeuge bzw. des Hack-Programms Grimoire. Das Programm kann nur bis zu Version 1.21b Warcraft 3's verwendet werden.

Inhaltsverzeichnis

Verwendung

Um das Programm benutzen zu können, muss man es per Menüeintrag im Editor aktivieren.

Daraufhin sind können zur Spielzeit mittels der Anweisung
call Cheat("war3err_DumpGlobalHT")
alle globalen Variablen und deren Werte in die Datei logs/war3err.txt geschrieben werden. Dasselbe gilt für lokale Variabelen mittels
call Cheat("war3err_DumpLocalHT")
. Dabei werden dann alle lokalen Variablen des aktuellen Bezugsrahmens hineingeschrieben. Außerdem kann mittels
call Cheat("DebugMsg: msg")
die Nachricht msg in die Datei logs/war3erruser.txt geschrieben.

Fehlerausgabe

Auf folgende Fehler wird während des Spiels automatisch per Nachricht hingewiesen:

Bytecode Tracer

Um den Bytecode Tracer verwenden zu können, muss in der Datei war3err.lua der Eintrag "bytecodetrace = true" stehen. Daraufhin werden sämtliche aufgezeichnete Operationen in die Datei logs/bytecodelog.txt geschrieben. Der Bytecode Tracer zeichnet praktisch alle Jass-Operationen auf. Dazu gehören zum Beispiel Funktionsaufrufe oder arithmetische Operationen.

Mit den Anweisungen
call Cheat("PauseTracer")
und
call Cheat("ContinueTracer")
kann die Bytecode-Aufzeichnung angehaltet bzw. fortgesetzt werden.

Speicherschutz

war3err weist auf falsche Dellokationen von Speicher, wie zum Beispiel
call DestroyGroup(null)
, hin. Außerdem werden Speicherlecks ermittelt, welche mittels
call RemoveLocation(I2Loc(-1))
und
call DestroyGroup(I2Grp(-1))
extrahiert werden können.

Profiling

Um diese Eigenschaft des Programms nutzen zu können, muss in der Datei war3err.lua der Eintrag "profiling = true" stehen. Außerdem muss man eine leere Funktion namens LogJASSCalls und eine Variable namens LogVariableUse im Code hinzufügen. Daraufhin kann man mittels der Anweisung
call LogJASSCalls()
die Aufrufhäufigkeit bzw. Statistiken aller Funktionen sehen. Setzt oder liest man dagegen die Variable LogVariableUse aus, so sieht man die Statistiken bezüglich der Verwendung aller Variablen.

Keine Pause

Enthält die Datei war3err.lua den Eintrag "nopause = true", so wird das Spiel bei einer Defokusierung des Warcraft-Fensters nicht pausiert. Dies funktioniert allerdings nicht bei Wiederholungen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Warcraft-Mapping
Werkzeuge