Перейти до вмісту

Налагодження

Налагоджуйте програми Elide: читайте простий вивід помилок, під'єднуйте налагоджувач, вимірюйте покриття, профілюйте час CPU, трасуйте за допомогою скриптів Insight і повідомляйте про помилки.

На цій сторінці

Знаходьте проблеми в програмах, запущених в Elide, і повідомляйте про них.

Читання помилок

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

Прості повідомлення про помилки потрапляють у stderr із коротким стеком; вивід програми залишається в stdout. --verbose або --debug додає власні журнали Elide.

0:09 / 0:09
ПрапорецьДія
--abort-on-uncaught-exceptionВиводить помилку, потім надсилає SIGABRT (код виходу 134), щоб ОС записала дамп ядра.
--redirect-warnings=FILEЗаписує попередження процесу, як-от process.emitWarning(), у FILE, а не в stderr.
--timeout=DURATIONЗупиняє програму через DURATION (наприклад, 30s) із кодом виходу 124.
--max-mem=SIZEОбмежує розмір купи, наприклад 512m. Перевищення завершується ненульовим кодом виходу.
0:12 / 0:12

Під’єднання налагоджувача

ПрограмаПрапорецьСлухаєКлієнт
JavaScript, TypeScript, Python--debugger=cdpws://127.0.0.1:1337/…Chrome DevTools або будь-який клієнт CDP
JavaScript, TypeScript, Python--debugger=dap127.0.0.1:4711, чекає на клієнтБудь-який редактор із підтримкою DAP
Java, Kotlin--debugger127.0.0.1:5005 (JDWP), призупиненоIntelliJ 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

Відкрийте посилання devtools:// у Chrome.

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

Змініть адресу слухача за допомогою --debugger-host і --debugger-port:

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

Число або host:port після --debugger — це адреса JDWP, яка стосується лише Java і Kotlin. JDWP не має автентифікації: прив’язуйте його до адрес поза loopback лише в довіреній мережі або використовуйте SSH-тунель.

Налагодження тестів

elide test --debugger
elide test --debugger=dap sample.test.mts
elide test --debugger=5005
ПрапорецьЩо налагоджує
--debuggerТести JavaScript через CDP і тести JVM через JDWP на 5005
--debugger=cdp або dapЛише тести JavaScript
--debugger=PORTЛише тести JVM

Шлях обмежує тести JavaScript одним файлом; тести JVM обмежуйте за назвою пакета. Поки налагоджувач під’єднано, файли тестів JavaScript виконуються по одному.

Вимірювання покриття

elide run --coverage app.js

Після завершення програми Elide виводить Coverage Report із покриттям інструкцій, рядків і функцій для кожного файлу. Покриття JavaScript і TypeScript також записується у форматі LCOV у .dev/reports/coverage/js/run/lcov.info у проєкті, а поза проєктом — у робочому каталозі.

Профілювання часу 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 рахує виклики кожної функції. Про записи JFR, дампи купи та perf у Linux див. Моніторинг і профілювання.

Трасування за допомогою Insights

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

Кожен вхід у функцію виводить рядок на кшталт enter fib. Події та фільтри описано в розділі Скрипти Insight.

Повідомлення про помилку

elide info
elide agent diagnostics
elide agent bug

elide agent bug виводить URL трекера задач і шаблон звіту в Markdown. Укажіть точну команду, очікувану поведінку та звіт про збій, якщо він є.

Чи була ця сторінка корисною?