Отладка
Переменная окружения OXC_LOG
Переменная окружения OXC_LOG включает трассировку времени выполнения в oxlint и oxfmt. Если она не задана, журналирование полностью отключено для нулевых накладных расходов.
Базовое использование
# Включить отладочное журналирование для oxlint
OXC_LOG=debug oxlint
# Включить отладочное журналирование для oxfmt
OXC_LOG=debug oxfmt
# Трассировка резолвера при использовании плагина import
OXC_LOG=oxc_resolver oxlint --import-plugin
# Трассировка форматтера
OXC_LOG=oxc_formatter oxfmtСинтаксис фильтра
OXC_LOG использует синтаксис фильтров tracing-subscriber:
| Шаблон | Описание |
|---|---|
debug | Уровень debug для всех модулей |
trace | Уровень trace для всех модулей |
oxc_resolver | Все записи модуля oxc_resolver |
oxc_resolver=debug | Уровень debug для oxc_resolver |
oxc_resolver=trace | Уровень trace для oxc_resolver |
oxc_formatter,oxc_resolver | Несколько модулей одновременно |
Вывод
Записи пишутся в stderr, чтобы не мешать обычному выводу диагностики линтера или отформатированному коду в stdout. В oxfmt дополнительно выводятся имена потоков и время по span для отладки многопоточности.
Типичные сценарии
Список всех обрабатываемых файлов:
OXC_LOG=debug oxlint
OXC_LOG=debug oxfmtОтладка разрешения модулей:
OXC_LOG=oxc_resolver=debug oxlint --import-pluginrust-lldb
С помощью rust-lldb можно получить информацию о panic из отладочных сборок.
Включите отладочные символы:
[profile.release]
debug = true
strip = false
panic = "unwind"Сборка бинарника:
cargo build --release --bin oxlint --features allocatorЗапуск под отладчиком:
rust-lldb -- ./target/release/oxlintПосле запуска нажмите r, чтобы выполнить программу.
Отладка TypeScript в VS Code
Согласно руководству по отладке в репозитории TypeScript:
- переименуйте
.vscode/launch.template.jsonвlaunch.json - добавьте
tests/cases/compiler/foo.ts - замените
"${fileBasenameNoExtension}"наfoo.ts - установите точку останова в исходном коде TypeScript
- в меню «Run → Start Debugging» или клавишей F5
- при отладке
tscсначала обрабатывает глобальные.d.ts, затем целевой тестовый файл Debug.formatXXX(value)изsrc/compiler/debug.tsможно использовать для вывода значений перечислений- в разделе «WATCH» отслеживайте нужные выражения
Отладка линтера в VS Code
Удобно отлаживать линтер для npm-проекта в другой директории с помощью CodeLLDB.
В .vscode/launch.json при необходимости измените поля:
cwd: абсолютный путь к npm-проектуargs: аргументы, передаваемые линтеру
{
"type": "lldb",
"request": "launch",
"name": "Debug Oxlint",
"cargo": {
"env": {
"RUSTFLAGS": "-g"
},
"args": ["build", "--bin=oxlint", "--package=oxlint"],
"filter": {
"name": "oxlint",
"kind": "bin"
}
},
"cwd": "PATH-TO-TEST-PROJECT",
"args": ["--ARGS-TO-OXLINT"]
}Откройте панель отладки VS Code, выберите «Debug Oxlint» и запустите отладку.
Процесс стартует с указанным cwd, то есть линтер выполняется в тестовом проекте с подключённым отладчиком.