Skip to content

デバッグ

OXC_LOG 環境変数

OXC_LOG 環境変数は、oxlint および oxfmt における実行時トレースを有効化します。設定されていない場合、ログ出力は完全に無効化され、コストゼロの動作が保証されます。

基本的な使い方

bash
# oxlint 用のデバッグログを有効化
OXC_LOG=debug oxlint

# oxfmt 用のデバッグログを有効化
OXC_LOG=debug oxfmt

# インポートプラグインを使用する際のリゾルバートレースを有効化
OXC_LOG=oxc_resolver oxlint --import-plugin

# フォーマッターのトレースを有効化
OXC_LOG=oxc_formatter oxfmt

フィルタ構文

OXC_LOGtracing-subscriber のフィルタ構文を使用しています:

パターン説明
debugすべてのモジュールでデバッグレベルを有効化
traceすべてのモジュールでトレースレベルを有効化
oxc_resolveroxc_resolver モジュールからのすべてのログを有効化
oxc_resolver=debugoxc_resolver モジュールのデバッグレベルを有効化
oxc_resolver=traceoxc_resolver モジュールのトレースレベルを有効化
oxc_formatter,oxc_resolver複数のモジュールを有効化

出力

ログは stderr に出力され、通常の診断情報やフォーマットされたコードの標準出力(stdout)と干渉しないように設計されています。oxfmt では、マルチスレッド処理のデバッグのためにスレッド名およびスパンタイミング情報を含んでいます。

一般的な使用例

処理対象のすべてのファイルを表示:

bash
OXC_LOG=debug oxlint
OXC_LOG=debug oxfmt

モジュール解決の問題をデバッグ:

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

rust-lldb

rust-lldb を使用すると、デバッグビルドからパニック情報を取得できます。

デバッグシンボルを有効化:

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

バイナリをビルド:

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

バイナリを実行:

bash
rust-lldb -- ./target/release/oxlint

起動後、プログラムの実行には r キーを押します。

VSCode での TypeScript のデバッグ

彼らのデバッグガイド によると、TypeScript リポジトリ内では以下の手順を実行してください:

  • .vscode/launch.template.jsonlaunch.json にリネーム
  • tests/cases/compiler/foo.ts を追加
  • "${fileBasenameNoExtension}"foo.ts に変更
  • TypeScript のソースコード内のどこかにブレークポイントを設定
  • 「ラン - デバッグ」メニューから、または F5 キーを押す
  • デバッグ中に、tsc はターゲットテストファイルの前にグローバルな .d.ts ファイルを評価します
  • src/compiler/debug.ts 内の Debug.formatXXX(value) は列挙型の値を出力するために使用できます
  • 「ウォッチ」セクションを使って興味のある値を「確認」する

VSCode での Linter のデバッグ

npm プロジェクトの外部にある Linter をデバッグするには、CodeLLDB を利用するのが簡単です。

.vscode/launch.json で、必要に応じて設定項目を変更してください:

  • cwd: npm プロジェクトへの絶対パス
  • args: Linter に渡される引数
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 で開始され、テストプロジェクト内で Linter を実行し、その中へデバッガーをアタッチするのと同じ状態になります。