Skip to content

Отладка

Переменная окружения OXC_LOG

Переменная окружения OXC_LOG включает трассировку времени выполнения в oxlint и oxfmt. Если она не задана, журналирование полностью отключено для нулевых накладных расходов.

Базовое использование

bash
# Включить отладочное журналирование для 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 для отладки многопоточности.

Типичные сценарии

Список всех обрабатываемых файлов:

bash
OXC_LOG=debug oxlint
OXC_LOG=debug oxfmt

Отладка разрешения модулей:

bash
OXC_LOG=oxc_resolver=debug oxlint --import-plugin

rust-lldb

С помощью rust-lldb можно получить информацию о panic из отладочных сборок.

Включите отладочные символы:

toml
[profile.release]
debug = true
strip = false
panic = "unwind"

Сборка бинарника:

bash
cargo build --release --bin oxlint --features allocator

Запуск под отладчиком:

bash
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: аргументы, передаваемые линтеру
json
{
  "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, то есть линтер выполняется в тестовом проекте с подключённым отладчиком.