Aller au contenu

Débogage

Déboguez les programmes Elide : lisez une sortie d'erreur brute, attachez un débogueur, mesurez la couverture, profilez le temps CPU, tracez avec des scripts Insight et signalez un bug.

Sur cette page

Trouvez et signalez les problèmes des programmes exécutés avec Elide.

Lire les erreurs

elide --error-format=plain run app.js

Les erreurs brutes vont sur stderr avec une pile courte ; la sortie du programme reste sur stdout. --verbose ou --debug ajoute les journaux propres à Elide.

0:09 / 0:09
OptionEffet
--abort-on-uncaught-exceptionAffiche l’erreur, puis lève SIGABRT (sortie 134) pour que le système écrive un core dump.
--redirect-warnings=FILEÉcrit les avertissements du processus, comme process.emitWarning(), dans FILE au lieu de stderr.
--timeout=DURATIONArrête le programme après DURATION (par exemple 30s) avec le code de sortie 124.
--max-mem=SIZELimite la taille du tas, par exemple 512m. Un dépassement échoue avec un code de sortie non nul.
0:12 / 0:12

Attacher un débogueur

ProgrammeOptionÉcoute surClient
JavaScript, TypeScript, Python--debugger=cdpws://127.0.0.1:1337/…Chrome DevTools ou tout client CDP
JavaScript, TypeScript, Python--debugger=dap127.0.0.1:4711, attend un clientTout éditeur compatible DAP
Java, Kotlin--debugger127.0.0.1:5005 (JDWP), suspenduIntelliJ IDEA, VS Code, jdb
elide run --debugger=cdp app.js
Debugger listening on ws://127.0.0.1:1337/<id>/inspect
For help, see: https://docs.elide.dev/guides/debugging
E.g. in Chrome open: devtools://devtools/bundled/js_app.html?ws=127.0.0.1:1337/<id>/inspect

Ouvrez le lien devtools:// dans Chrome.

elide run --debugger=dap app.js
elide run --debugger Hello.kt
Listening for transport dt_socket at address: 5005

Changez l’adresse d’écoute avec --debugger-host et --debugger-port :

elide run --debugger=dap --debugger-port=5678 app.js
elide run --debugger=0.0.0.0:5005 Hello.kt

Un nombre ou host:port après --debugger est une adresse JDWP et ne s’applique qu’à Java et Kotlin. JDWP n’a pas d’authentification : n’écoutez au-delà de l’interface loopback que sur un réseau de confiance, ou utilisez un tunnel SSH.

Déboguer les tests

elide test --debugger
elide test --debugger=dap sample.test.mts
elide test --debugger=5005
OptionDébogue
--debuggerLes tests JavaScript via CDP et les tests JVM via JDWP sur 5005
--debugger=cdp ou dapLes tests JavaScript uniquement
--debugger=PORTLes tests JVM uniquement

Un chemin restreint les tests JavaScript à un fichier ; restreignez les tests JVM par nom de paquet. Tant qu’un débogueur est attaché, les fichiers de test JavaScript s’exécutent un par un.

Mesurer la couverture

elide run --coverage app.js

Elide affiche un rapport de couverture à la sortie du programme, avec les instructions, lignes et fonctions couvertes par fichier. La couverture JavaScript et TypeScript est aussi écrite au format LCOV dans .dev/reports/coverage/js/run/lcov.info du projet, ou dans le répertoire de travail hors d’un projet.

Profiler le temps CPU

elide run --profiler=cputracing app.js
╭Profiler Report───────────────────────────────────────────────────────────────╮
│ Location           Root               Total        Interpreted      Compiled │
│   app.js            fib       21.89k 100.0%      21.89k 100.0%        0 0.0% │
│   app.js       :program              1 0.0%           1 100.0%        0 0.0% │
╰──────────────────────────────────────────────────────────────────────────────╯

Total compte les appels de chaque fonction. Pour les enregistrements JFR, les vidages du tas et perf sous Linux, voir Surveillance et profilage.

Tracer avec Insight

// insight.js
insight.on("enter", (ctx) => {
  console.log("enter", ctx.name);
}, { roots: true });
elide run --insights=insight.js app.js

Chaque entrée dans une fonction affiche une ligne comme enter fib. Voir Scripts Insight pour les événements et les filtres.

Signaler un bug

elide info
elide agent diagnostics
elide agent bug

elide agent bug affiche l’URL du gestionnaire de tickets et un modèle de rapport en Markdown. Indiquez la commande exacte, le comportement attendu et tout rapport de plantage.

Cette page vous a-t-elle aidé ?