Как находить проблемы в программах, запущенных в Elide, и сообщать о них.
Чтение ошибок
elide --error-format=plain run app.jsПростые ошибки выводятся в stderr с коротким стеком; вывод программы остаётся в stdout. --verbose или --debug
добавляет собственный журнал Elide.
| Флаг | Действие |
|---|---|
--abort-on-uncaught-exception | Выводит ошибку, затем посылает SIGABRT (код выхода 134), чтобы ОС записала дамп памяти. |
--redirect-warnings= | Записывает предупреждения процесса, например process.emitWarning(), в FILE, а не в stderr. |
--timeout=DURATION | Останавливает программу через DURATION (например, 30s) с кодом выхода 124. |
--max-mem=SIZE | Ограничивает размер кучи, например 512m. При превышении программа завершается с ненулевым кодом. |
Подключение отладчика
| Программа | Флаг | Где слушает | Клиент |
|---|---|---|---|
| JavaScript, TypeScript, Python | --debugger=cdp | ws://127.0.0.1:1337/… | Chrome DevTools или любой клиент CDP |
| JavaScript, TypeScript, Python | --debugger=dap | 127.0.0.1:4711, ждёт клиента | Любой редактор с поддержкой DAP |
| Java, Kotlin | --debugger | 127.0.0.1:5005 (JDWP), программа приостановлена | IntelliJ IDEA, VS Code, jdb |
elide run --debugger=cdp app.jsDebugger 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.ktListening 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 bugelide agent bug выводит URL трекера задач и шаблон отчёта в Markdown. Укажите точную команду, ожидаемое поведение
и отчёт о сбое, если он есть.