Перейти к содержимому

Отладка

Отладка программ Elide: чтение простого вывода ошибок, подключение отладчика, измерение покрытия, профилирование процессорного времени, трассировка скриптами 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 в проекте или в рабочем каталоге, если проекта нет.

Профилирование процессорного времени

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 см. Мониторинг и профилирование.

Трассировка с Insight

// 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. Укажите точную команду, ожидаемое поведение и отчёт о сбое, если он есть.

Была ли эта страница полезной?