# デバッグ {#debugging}

オープンであることは実用的な利点です。コードが利用可能で、ローカルで実行でき、コーディングエージェントを使用して質問への回答を迅速化し、コードベース内の潜在的なバグをデバッグできます。

デバッグ中にドキュメントの欠落や不備を見つけた場合は、`docs/` 以下の英語ドキュメントを更新して PR を作成してください。

## CI でスレッドダンプを取得する {#thread-dump-ci}

CLI が断続的にハングする場合、プロセスを停止せずにスレッドダンプを取得できます。シグナルハンドラを有効にし、実行中の `tuist` プロセスに `SIGUSR1` を送信してください。

```bash
export TUIST_THREAD_DUMP_SIGNAL=1
export TUIST_THREAD_DUMP_SAMPLE=1 # macOS only, captures all threads via /usr/bin/sample
tuist generate &
TUIST_PID=$!
sleep 600
kill -USR1 "$TUIST_PID"
wait "$TUIST_PID"
```

`TUIST_THREAD_DUMP_SAMPLE` が設定されていない場合、ハンドラは現在のスレッドスタックを出力します。出力は stderr に書き込まれるため、CI ログに表示されます。

## コーディングエージェントを使用する {#use-coding-agents}

コーディングエージェントは次のような場合に役立ちます。

- 特定の動作がどこで実装されているかをコードベース内で検索する。
- ローカルで問題を再現し、迅速に試行錯誤する。
- Tuist 内での入力の流れを追跡し、根本原因を特定する。

可能な限り最小限の再現手順を共有し、エージェントを対象のコンポーネント（CLI、サーバー、キャッシュ、ドキュメント、またはハンドブック）に向けてください。範囲を絞るほど、デバッグプロセスはより迅速かつ正確になります。

### 頻繁に必要なプロンプト（FNP） {#frequently-needed-prompts}

#### 予期しないプロジェクト生成 {#unexpected-project-generation}

プロジェクト生成によって期待していない結果が得られています。`/path/to/project` のプロジェクトに対して Tuist CLI を実行し、なぜこのようなことが起きているのかを理解してください。ジェネレーターのパイプラインを追跡し、出力を担当するコードパスを特定してください。

#### 生成されたプロジェクトにおける再現可能なバグ {#reproducible-bug-in-generated-projects}

これは生成されたプロジェクトのバグのように見えます。既存の例を参考にして、`examples/` 以下に再現可能なプロジェクトを作成してください。失敗する受け入れテストを追加し、そのテストのみを選択して `xcodebuild` で実行し、問題を修正してから、テストを再実行して合格することを確認し、PR を作成してください。
