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

0 von 7 erledigt

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 wie 2026-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, .tsx oder 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 --inspect lauscht.
  • 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):

bash
pip install debugpy

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 SESSION und DEBUG auf dem Objekt (oder DEBUG ANY PROCEDURE).
  • Yuli kompiliert das Objekt mit COMPILE DEBUG neu.
  • Tasten: F5 fortsetzen, F10 nächste Zeile, F11 hineinspringen und Shift+F11 herausspringen.

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.