Documentation / L’IDE
Débogage
Déboguez Java, Node.js, le navigateur, Python, Go, .NET et PL/SQL depuis un même panneau, avec des configurations suggérées et des débogueurs installés uniquement avec votre autorisation.
Yuli débogue chaque langage avec son débogueur de référence et affiche tout dans le même panneau : pile, variables, console d’évaluation et points d’arrêt. Ce qui manque n’est installé que si vous l’autorisez.
| Langage | Débogueur | Comment Yuli le lance |
|---|---|---|
| Java et JVM | Client JDWP natif | Démarre la JVM ou s’y attache |
| Node.js | Chrome DevTools Protocol (CDP), avec source maps | node --inspect ou attachement à un processus |
| Navigateur | CDP sur Chrome, Chromium ou Edge | Un profil séparé, jamais le vôtre |
| Python | debugpy (DAP) | python -m debugpy.adapter, avec l’environnement virtuel du projet |
| Go | Delve (DAP) | dlv dap, ou attachement à un dlv --headless en cours d’exécution |
| .NET | netcoredbg (DAP) | netcoredbg --interpreter=vscode |
| Oracle PL/SQL | DBMS_DEBUG d’Oracle |
Depuis le panneau de base de données |
Votre première session
Configurations de débogage
La boîte de dialogue Configurations de débogage s’ouvre depuis le bouton du panneau Débogage ou depuis le menu du panneau Exécution (Configurations de débogage…).
- Types : Java, Node.js, Python, Go, .NET et Navigateur.
- Modes : Lancer (Yuli démarre le programme) ou Attacher (il se connecte à un programme déjà en cours d’exécution).
- Enregistrées : celles que vous avez créées. Suggérées pour ce projet : celles que Yuli trouve dans votre code.
| Champ | Rôle |
|---|---|
Programme, Module (python -m), Classe principale |
Ce qui est exécuté |
| Arguments, Répertoire de travail, Variables d’environnement | Comment c’est exécuté |
| Interpréteur, Options de compilation | Le Python ou les build flags à utiliser |
| Seulement mon code, S’arrêter à l’entrée | Où l’exécution s’arrête |
| Hôte, Port, ID de processus | À quoi s’attacher |
| URL, Racine web, Navigateur | Débogage dans le navigateur |
Ce que Yuli suggère
| Projet | Suggestion |
|---|---|
| Python | main.py, app.py ou manage.py (celui-ci avec runserver --noreload), et « Python: attach 5678 » |
| Go | « Go: . » s’il existe un go.mod |
| .NET | Le fichier de projet |
| Node.js | Le main du package.json |
| Navigateur | Si le projet utilise vite, react-scripts, next, Angular, vue ou svelte. L’URL utilise le port 5173 avec vite, 4200 avec Angular et 3000 dans les autres cas |
Les configurations sont enregistrées dans debug-configs.json, dans le dossier de travail que Yuli tient pour chaque projet, et non dans votre dépôt.
S’attacher à un processus
En mode Attacher, Yuli recherche ce qui peut être débogué sur votre machine : processus Node lancés avec --inspect, processus Python, Go et .NET, JVM avec JDWP et onglets de navigateur avec DevTools. S’il n’y en a aucun d’un type donné, il vous le dit, par exemple : « Aucun processus Node avec --inspect en écoute. »
Java
- Client JDWP natif, avec arbre des variables, valeurs en ligne sur le code et valeurs lisibles (un objet comme
Owner{id=3, …}, une date comme2026-10-15, une collection avec sa taille). - Points d’arrêt conditionnels, par nombre de passages, logpoints et sur exception.
- Hot swap (
Ctrl+Alt+F10) : recompile avec l’outil du projet et redéfinit les classes modifiées sans redémarrer la session.
L’évaluateur d’expressions
Il sert dans la console d’évaluation, les expressions surveillées, les conditions des points d’arrêt et les messages des logpoints.
| Pris en charge | Non pris en charge |
|---|---|
?: || && | ^ & == != < > <= >= instanceof << >> >>> + - * / % |
new |
Opérateurs unaires + - ! ~ et conversions de type |
Affectations, ++ et -- |
Accès aux membres, appels de méthodes et index [i] |
Lambdas |
Les appels de méthodes exécutent du vrai code dans la JVM que vous déboguez. Évitez les méthodes qui modifient l’état.
Propriétés du point d’arrêt
Dans Propriétés du point d’arrêt, vous réglez le comportement de chacun :
- Condition : expression Java ; l’exécution ne s’arrête que lorsqu’elle est vraie.
- Numéro de passage : s’arrête à ce passage sur la ligne.
- Journaliser seulement avec Message : écrit dans la console sans s’arrêter.
Si une condition ne peut pas être évaluée, le débogueur ne l’ignore pas en silence : il s’arrête une fois et affiche la raison, par exemple « [condition] « total > limite » (ligne 42) n’a pas pu être évaluée : … ».
Node.js et le navigateur
- Source maps (v3) : vous placez le point d’arrêt dans votre
.ts, votre.tsxou le code d’origine, et Yuli le reporte sur le code généré. À l’arrêt, la pile affiche de nouveau vos fichiers. - Attacher : à n’importe quel processus Node qui écoute avec
--inspect. - Navigateur : Yuli ouvre Chrome, Chromium ou Edge avec un profil séparé (
--user-data-dir) et le port de débogage distant. Votre profil habituel, avec vos sessions et vos extensions, n’est pas touché. - Le hot swap ne s’applique pas au code avec source maps : utilisez le rechargement à chaud du serveur de développement.
Python, Go et .NET
Tous trois utilisent le protocole DAP. Python utilise l’environnement virtuel du projet (VIRTUAL_ENV d’abord, puis python3 ou python). Go peut lancer dlv dap ou s’attacher à un dlv --headless déjà en cours d’exécution. Dans l’éditeur, le ▶ de la marge propose aussi de déboguer le if __name__ == "__main__": de Python, func main et func TestX de Go et le static void Main( de C#.
Installer le débogueur
S’il manque le débogueur, l’avertissement « Il manque le débogueur de… » apparaît avec ce que Yuli va faire, et les boutons Installer et déboguer et Annuler.
Yuli installe debugpy avec pip dans l’environnement Python du projet (ou avec --user si vous utilisez le Python du système) :
pip install debugpyYuli compile et installe Delve avec votre Go dans ses outils gérés (Delve ne publie pas de binaires). Si la dernière version de Delve exige un Go plus récent, il utilise la plus récente compatible avec le vôtre.
go install github.com/go-delve/delve/cmd/dlv@latestIl est installé dans <runtimes>/delve/bin (le dossier des runtimes de Yuli ; voir Serveurs de langage et build).
Yuli télécharge netcoredbg (licence MIT) depuis github.com/Samsung/netcoredbg/releases/latest et l’enregistre dans <runtimes>/netcoredbg.
Il existe une version pour Windows x64, Linux x64 et arm64, et macOS (celle en x64, qui tourne avec Rosetta sur Apple Silicon). Sur les autres plateformes, Yuli vous indique qu’il n’est pas disponible.
Démarrer une session n’installe jamais rien de lui-même. Rien n’est téléchargé ni exécuté sans votre autorisation ; si l’installation échoue, le journal reste visible dans le même avertissement.
PL/SQL
Yuli débogue les procédures, fonctions et packages Oracle avec DBMS_DEBUG.
- Le compte a besoin de
DEBUG CONNECT SESSIONet deDEBUGsur l’objet (ou deDEBUG ANY PROCEDURE). - Yuli recompile l’objet avec
COMPILE DEBUG. - Touches :
F5continuer,F10ligne suivante,F11entrer etShift+F11sortir.
Raccourcis
| Action | Raccourci |
|---|---|
| Déboguer la dernière configuration | Shift+F9 |
| Continuer | F9 |
| Ligne suivante (step over) | F8 |
| Entrer, uniquement dans votre code (step into) | F7 |
| Forcer l’entrée | Alt+Shift+F7 |
| Sortir de la méthode | Shift+F8 |
| Recharger les classes modifiées (hot swap) | Ctrl+Alt+F10 |
Avec l’IA
Lorsqu’un test ou une étape échoue, Demander la cause à l’IA apparaît dans le panneau Débogage, dans l’explorateur de tests et dans la vérification des Modifications IA. Le bouton prépare le contexte (l’erreur, la pile, le code) et le dépose dans le chat : il ne l’envoie pas ; c’est vous qui décidez quoi demander.
Voir aussi Exécuter et déboguer et Serveurs de langage et build.