Zum Inhalt springen

Debugging

Debuggen Sie Elide-Programme: schlichte Fehlerausgabe lesen, einen Debugger anhängen, Abdeckung messen, CPU-Zeit profilieren, mit Insights-Skripten tracen und einen Fehler melden.

Auf dieser Seite

Probleme in Programmen finden und melden, die Sie mit Elide ausführen.

Fehler lesen

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

Schlichte Fehler gehen mit einem kurzen Stack auf stderr; die Programmausgabe bleibt auf stdout. --verbose oder --debug fügt die eigenen Logs von Elide hinzu.

0:09 / 0:09
FlagWirkung
--abort-on-uncaught-exceptionGibt den Fehler aus und löst dann SIGABRT aus (Exit-Code 134), damit das Betriebssystem einen Core-Dump schreibt.
--redirect-warnings=FILESchreibt Prozesswarnungen wie process.emitWarning() nach FILE statt auf stderr.
--timeout=DURATIONStoppt das Programm nach DURATION (zum Beispiel 30s) mit Exit-Code 124.
--max-mem=SIZEBegrenzt die Heap-Größe, zum Beispiel 512m. Eine Überschreitung endet mit einem Exit-Code ungleich null.
0:12 / 0:12

Einen Debugger anhängen

ProgrammFlagLauscht aufClient
JavaScript, TypeScript, Python--debugger=cdpws://127.0.0.1:1337/…Chrome DevTools oder ein beliebiger CDP-Client
JavaScript, TypeScript, Python--debugger=dap127.0.0.1:4711, wartet auf einen ClientJeder Editor mit DAP-Unterstützung
Java, Kotlin--debugger127.0.0.1:5005 (JDWP), angehaltenIntelliJ 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

Öffnen Sie den devtools://-Link in Chrome.

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

Ändern Sie die Adresse eines Listeners mit --debugger-host und --debugger-port:

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

Eine Zahl oder host:port nach --debugger ist eine JDWP-Adresse und gilt nur für Java und Kotlin. JDWP hat keine Authentifizierung: Binden Sie nur in einem vertrauenswürdigen Netz über Loopback hinaus, oder verwenden Sie einen SSH-Tunnel.

Tests debuggen

elide test --debugger
elide test --debugger=dap sample.test.mts
elide test --debugger=5005
FlagDebuggt
--debuggerJavaScript-Tests über CDP und JVM-Tests über JDWP auf 5005
--debugger=cdp oder dapNur JavaScript-Tests
--debugger=PORTNur JVM-Tests

Ein Pfad beschränkt JavaScript-Tests auf eine Datei; JVM-Tests beschränken Sie über den Paketnamen. Solange ein Debugger angehängt ist, laufen JavaScript-Testdateien nacheinander.

Abdeckung messen

elide run --coverage app.js

Elide gibt nach dem Ende des Programms einen Coverage Report aus, mit den abgedeckten Anweisungen, Zeilen und Funktionen pro Datei. Die Abdeckung für JavaScript und TypeScript wird außerdem als LCOV nach .dev/reports/coverage/js/run/lcov.info im Projekt geschrieben, außerhalb eines Projekts ins Arbeitsverzeichnis.

CPU-Zeit profilieren

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 zählt die Aufrufe jeder Funktion. Für JFR-Aufzeichnungen, Heap-Dumps und Linux-perf siehe Überwachung und Profiling.

Mit Insights tracen

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

Jeder Eintritt in eine Funktion gibt eine Zeile wie enter fib aus. Ereignisse und Filter finden Sie unter Insight-Skripte.

Einen Fehler melden

elide info
elide agent diagnostics
elide agent bug

elide agent bug gibt die URL des Issue-Trackers und eine Markdown-Vorlage für den Bericht aus. Tragen Sie den genauen Befehl, das erwartete Verhalten und gegebenenfalls einen Absturzbericht ein.

War diese Seite hilfreich?