MTA:TD - Debugger und Test Framework

  • Guten Abend,

    hiermit möchte ich euch meine neuste Entwicklung vorstellen, die ich MTA:TD getauft habe.

    MTA:TD steht für MTA Test und Debugging Framework und umfasst zurzeit im Wesentlichen einen Debugger, der als Plugin für Visual Studio Code realisiert ist. Die Architektur des Debuggers erlaubt es aber auch mit relativ wenig Aufwand Erweiterungen für andere Editoren mit Pluginunterstützung (wie z.B. Atom) zu schreiben. Da Visual Studio Code jedoch zurzeit, meiner Meinung nach, der beste Editor auch für MTA ist, habe ich mich entschieden die Erweiterung für VSCode umzusetzen.

    Was kann ich damit machen?
    Der Sinn eines Debuggers ist es, Fehler im Code vor allem erst einmal zu finden. Bisher war man in einer MTA-Umgebung leider immer auf irgendwelche Aufrufe von outputChatBox/outputDebugString angewiesen, um herauszufinden, ob einzelne Codeteile überhaupt ausgeführt werden oder welche Inhalte Variablen haben. Wer bereits mit anderen Programmiersprachen gearbeitet hat, weiß diesen Komfort zu schätzen.
    Das möchte ich mit dieser Erweiterung ändern!

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Diese Erweiterung erlaubt es z.B. Haltepunkte (engl. Breakpoints) durch Klicken links neben der Codezeile zu setzen (rote Punkte auf dem Bild), die die Codeausführung an dieser Stelle anhält, sobald diese erreicht wird. In dem pausierten Zustand sind dann auf der linken Seite die Inhalte der lokalen, upvalue und globalen Variablen zu sehen. Alternativ kann der Inhalt auch eingesehen werden, indem man mit der Maus über die Variable geht (letzteres funktioniert bisher aber nur mit lokalen Variablen).

    Weitere Features

    • Step Over (nächste Zeile in der aktuellen Funktion ausführen)
    • Step Into (nächste Zeile allgemein ausführen, d.h. ggf. Sprung in die Funktion hinein)
    • Resource bei Änderungen über den Restart-Button neu starten
    • integriertes Runcode, sodass Befehle über die in VSCode integrierte Debug Console ausgeführt werden können

    Installation
    Wer VSCode noch nicht installiert hat, kann das von https://code.visualstudio.com/ tun.
    Nach der Installation reicht es dann über den unteren Eintrag in der Aktivitätsleiste (linke Seitenleiste) nach MTA:SA Debugger and Test Framework zu suchen und auf den Install-Button zu drücken.
    Sobald ihr das getan habt, müssen noch folgende Schritte einmalig ausgeführt werden.

    • Die Ressource öffnen, die gedebuggt werden soll (dazu File -> Open Folder)
    • Eine Launchkonfiguration anlegen, indem ihr auf das Debugsymbol (der Käfer) in der Aktivitätsleiste klickt und dann oben links im Dropdownmenü "Add configuration" auswählt. Daraufhin wird eine neue launch.json mit Standardinhalt geöffnet.
    • Überprüft dort, ob der Eintrag bei serverpath stimmt. Wenn nicht, korrigiert ihn (dort muss der Pfad eingetragen werden, in dem MTA Server.exe liegt, aber ohne MTA Server.exe am Ende des Pfades)
    • Nun müsst ihr ein Script zu eurer Ressource hinzufügen, indem ihr F1 drückt und MTA:TD: Add bundle to current project eingebt. Daraufhin wird im aktuellen Verzeichnis eine Datei namens MTATD.bundle.lua erstellt.
    • Diese Datei muss dann in der meta.xml VOR allen anderen Scripts wie folgt eingetragen werden: <script src="MTATD.bundle.lua" type="shared"/>

    Das war's schon mit der Einrichtung. Wenn ihr nun Debuggen wollt, reichen 2 Schritte:

    • F1 drücken -> MTA:TD: Start MTA Debug Server eingeben und bestätigen. Daraufhin wird ein MTA Server in einem speziellen Modus gestartet (direkt starten funktioniert nicht!).
    • Um dann das eigentliche Debugging zu starten, klickt ihr in der Debugansicht auf das Play-Symbol. Sobald dann die Ressource gestartet wird, ist der Debugger bereit und kann auf Breakpoints u.ä. reagieren.

    Wichtig ist außerdem noch, dass der MTA Server auf einer aktuellen Nightly ist: https://nightly.mtasa.com/

    Beachtet außerdem, dass es sich um eine sehr frühe Version handelt, in der noch einige Features fehlen (unter anderem: voller Funktionsaufrufsstapel, Inhalte von Tables richtig anzeigen, Variablen live editieren).

    Code und Mitwirken
    Wenn ihr Interesse habt an dem Projekt mitzuwirken, könnt ihr das gerne über GitHub tun. Das Repository ist unter der Adresse https://github.com/Jusonex/MTATD zu finden.

    Einmal editiert, zuletzt von ronald drunk (3. Mai 2017 um 22:27)

  • Dieses Thema enthält 14 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!