Dokumentation / Die IDE
Debugging
Debugge Java, Node.js, den Browser, Python, Go, .NET und PL/SQL im selben Panel, mit vorgeschlagenen Konfigurationen und Debuggern, die nur mit deiner Erlaubnis installiert werden.
Yuli debuggt jede Sprache mit ihrem Referenz-Debugger und zeigt alles im selben Panel: Stack, Variablen, Auswertungskonsole und Breakpoints. Was fehlt, wird nur installiert, wenn du es erlaubst.
| Sprache | Debugger | Wie Yuli ihn startet |
|---|---|---|
| Java und JVM | Nativer JDWP-Client | Startet die JVM oder hängt sich an sie an |
| Node.js | Chrome DevTools Protocol (CDP), mit Source Maps | node --inspect oder an einen Prozess anhängen |
| Browser | CDP in Chrome, Chromium oder Edge | Ein separates Profil, nie deines |
| Python | debugpy (DAP) | python -m debugpy.adapter, mit der virtuellen Umgebung des Projekts |
| Go | Delve (DAP) | dlv dap oder an ein laufendes dlv --headless anhängen |
| .NET | netcoredbg (DAP) | netcoredbg --interpreter=vscode |
| Oracle PL/SQL | DBMS_DEBUG von Oracle |
Aus dem Datenbank-Panel |
Deine erste Sitzung
Debug-Konfigurationen
Den Dialog Debug-Konfigurationen öffnest du über die Schaltfläche im Panel Debugging oder über das Menü des Panels Ausführung (Debug-Konfigurationen…).
- Typen: Java, Node.js, Python, Go, .NET und Browser.
- Modi: Starten (Yuli startet das Programm) oder Anhängen (verbindet sich mit einem, das schon läuft).
- Gespeichert: die, die du angelegt hast. Vorschläge für dieses Projekt: die, die Yuli in deinem Code findet.
| Feld | Wofür |
|---|---|
Programm, Modul (python -m), Hauptklasse |
Was ausgeführt wird |
| Argumente, Arbeitsverzeichnis, Umgebungsvariablen | Wie es ausgeführt wird |
| Interpreter, Build-Optionen | Das zu verwendende Python oder die Build-Flags |
| Nur mein Code, Beim Start anhalten | Wo angehalten wird |
| Host, Port, Prozess-ID | Woran angehängt wird |
| URL, Web-Root, Browser | Debugging im Browser |
Was Yuli vorschlägt
| Projekt | Vorschlag |
|---|---|
| Python | main.py, app.py oder manage.py (dieses mit runserver --noreload) und „Python: attach 5678“ |
| Go | „Go: .“, wenn es eine go.mod gibt |
| .NET | Die Projektdatei |
| Node.js | Das main aus der package.json |
| Browser | Wenn das Projekt vite, react-scripts, next, Angular, vue oder svelte verwendet. Die URL nutzt Port 5173 mit vite, 4200 mit Angular und 3000 in allen anderen Fällen |
Die Konfigurationen werden in debug-configs.json gespeichert, im Arbeitsordner, den Yuli für jedes Projekt anlegt, nicht in deinem Repository.
An einen Prozess anhängen
Im Modus Anhängen sucht Yuli auf deinem Rechner nach allem, was sich debuggen lässt: mit --inspect gestartete Node-Prozesse, Python-, Go- und .NET-Prozesse, JVMs mit JDWP und Browser-Tabs mit DevTools. Gibt es von einem Typ keinen, sagt es dir das, zum Beispiel: „Keine Node-Prozesse mit --inspect, die lauschen.“
Java
- Nativer JDWP-Client mit Variablenbaum, Inline-Werten über dem Code und lesbaren Werten (ein Objekt wie
Owner{id=3, …}, ein Datum wie2026-10-15, eine Collection mit ihrer Größe). - Bedingte Breakpoints, Breakpoints mit Trefferzähler, Logpoints und Exception-Breakpoints.
- Hot Swap (
Ctrl+Alt+F10): kompiliert mit dem Werkzeug des Projekts neu und definiert die geänderten Klassen neu, ohne die Sitzung neu zu starten.
Der Ausdrucksauswerter
Er wird in der Auswertungskonsole, in den beobachteten Ausdrücken, in den Bedingungen der Breakpoints und in den Meldungen der Logpoints verwendet.
| Unterstützt | Unterstützt nicht |
|---|---|
?: || && | ^ & == != < > <= >= instanceof << >> >>> + - * / % |
new |
Unäre + - ! ~ und Typumwandlungen |
Zuweisungen, ++ und -- |
Memberzugriff, Methodenaufrufe und Indizes [i] |
Lambdas |
Methodenaufrufe führen echten Code in der JVM aus, die du debuggst. Vermeide Methoden, die den Zustand ändern.
Eigenschaften des Breakpoints
Unter Eigenschaften des Breakpoints legst du fest, wie sich jeder einzelne verhält:
- Bedingung: ein Java-Ausdruck; hält nur an, wenn er wahr ist.
- Treffer Nummer: hält beim so vielten Durchlauf der Zeile an.
- Nur protokollieren mit Meldung: schreibt in die Konsole, ohne anzuhalten.
Lässt sich eine Bedingung nicht auswerten, ignoriert der Debugger sie nicht stillschweigend: Er hält einmal an und zeigt den Grund, zum Beispiel „[Bedingung] „total > limite“ (Zeile 42) konnte nicht ausgewertet werden: …“.
Node.js und der Browser
- Source Maps (v3): Du setzt den Breakpoint in deine
.ts,.tsxoder in den Originalcode, und Yuli überträgt ihn in den generierten Code. Beim Anhalten zeigt der Stack wieder deine Dateien. - Anhängen: an jeden Node-Prozess, der mit
--inspectlauscht. - Browser: Yuli öffnet Chrome, Chromium oder Edge mit einem separaten Profil (
--user-data-dir) und dem Port für Remote-Debugging. Dein normales Profil mit deinen Sitzungen und Erweiterungen bleibt unberührt. - Hot Swap gilt nicht für Code mit Source Maps: Nutze das Hot Reload des Entwicklungsservers.
Python, Go und .NET
Alle drei verwenden das Protokoll DAP. Python nutzt die virtuelle Umgebung des Projekts (zuerst VIRTUAL_ENV, dann python3 oder python). Go kann dlv dap starten oder sich an ein dlv --headless anhängen, das du schon laufen hast. Im Editor bietet das ▶ im Rand auch an, das if __name__ == "__main__": von Python, func main und func TestX von Go und das static void Main( von C# zu debuggen.
Den Debugger installieren
Fehlt der Debugger, erscheint „Der Debugger für … fehlt“ mit dem, was Yuli tun wird, und den Schaltflächen Installieren und debuggen und Abbrechen.
Yuli installiert debugpy mit pip in der Python-Umgebung des Projekts (oder mit --user, wenn du das Python des Systems verwendest):
pip install debugpyYuli kompiliert Delve mit deinem Go und installiert es in seinen verwalteten Werkzeugen (Delve veröffentlicht keine Binärdateien). Verlangt die neueste Version von Delve ein neueres Go, nimmt Yuli die neueste, die mit deinem kompatibel ist.
go install github.com/go-delve/delve/cmd/dlv@latestEs wird in <runtimes>/delve/bin installiert (der Runtime-Ordner von Yuli; siehe Language Server und Build).
Yuli lädt netcoredbg (MIT-Lizenz) von github.com/Samsung/netcoredbg/releases/latest herunter und legt es in <runtimes>/netcoredbg ab.
Es gibt Versionen für Windows x64, Linux x64 und arm64 sowie macOS (die x64-Version, die auf Apple Silicon mit Rosetta läuft). Auf anderen Plattformen weist Yuli dich darauf hin, dass es nicht verfügbar ist.
Das Starten einer Sitzung installiert nie etwas eigenmächtig. Nichts wird ohne deine Erlaubnis heruntergeladen oder ausgeführt; schlägt die Installation fehl, bleibt das Protokoll im selben Hinweis sichtbar.
PL/SQL
Yuli debuggt Prozeduren, Funktionen und Pakete von Oracle mit DBMS_DEBUG.
- Das Konto braucht
DEBUG CONNECT SESSIONundDEBUGauf dem Objekt (oderDEBUG ANY PROCEDURE). - Yuli kompiliert das Objekt mit
COMPILE DEBUGneu. - Tasten:
F5fortsetzen,F10nächste Zeile,F11hineinspringen undShift+F11herausspringen.
Tastenkürzel
| Aktion | Tastenkürzel |
|---|---|
| Letzte Konfiguration debuggen | Shift+F9 |
| Fortsetzen | F9 |
| Nächste Zeile (Step over) | F8 |
| Hineinspringen, nur dein Code (Step into) | F7 |
| Hineinspringen erzwingen | Alt+Shift+F7 |
| Aus der Methode herausspringen | Shift+F8 |
| Geänderte Klassen neu laden (Hot Swap) | Ctrl+Alt+F10 |
Mit der KI
Wenn ein Test oder ein Schritt fehlschlägt, erscheint Die KI nach der Ursache fragen im Panel Debugging, im Test-Explorer und in der Verifikation von KI-Änderungen. Die Schaltfläche bereitet den Kontext vor (den Fehler, den Stack, den Code) und legt ihn in den Chat: Sie sendet ihn nicht ab; du entscheidest, was du fragst.
Siehe auch Ausführen und debuggen und Language Server und Build.