接続できないとき(トラブルシューティング)
ごきげんよう。「マニュアルどおりにしたのに繋がらない」——デバッグで一番心が折れる瞬間ですわね。けれど落ち着きなさいまし。原因はたいてい一本道で切り分けられますの。わたくしと一緒に、慌てず順に確かめていきましょう。
このページでは、アタッチがうまくいかないとき/うまくいったか分からないときの確認手順を扱う。デバッグの全体像と有効化は デバッグ概要、接続設定は VSCode 接続と拡張導入、ブレーク中の挙動は 構造的制約と緩和策 を参照する。
まず切り分ける: アプリ側か VSCode 側か
問題を「pasta(アプリ)側」と「VSCode(接続)側」のどちらかに二分するのが最短の近道である。判定の鍵は デバッグバックエンドがポートを開いて待ち受けているか の一点である。
手順 1: バックエンドが待ち受けているか(OS 側で確認)
デバッグを有効化してゴーストを起動した状態で、PowerShell で待ち受けポートを確認する。
Get-NetTCPConnection -LocalPort 9276 -State Listen
- 行が返る(
Listen状態がある)→ バックエンドは正常に待ち受けている。問題は VSCode 側。手順 2 へ進む。 - 何も返らない → バックエンドが待ち受けていない。問題はアプリ側。次を確認する。
- デバッグが有効化されているか(
pasta.tomlの[debug] enabled = true、または環境変数PASTA_DEBUG)。有効化の詳細は デバッグ概要 を参照する。 - 環境変数で有効化する場合、その環境変数がベースウェア(SSP)のプロセスに渡っているか。別のシェルで設定しただけでは、SSP から起動したゴーストには伝わらないことがある。確実なのは
pasta.tomlでの有効化である。 - ゴースト(pasta.dll を読み込むベースウェア)が実際に起動しているか。
- ポートを既定から変更している場合、有効化側のポートと待ち受け確認に使うポート番号が一致しているか。
- デバッグが有効化されているか(
ポートを変更している場合は、上記コマンドの 9276 を実際のポート番号に置き換える。
手順 2: アタッチできているか(VSCode 側で確認)
バックエンドが待ち受けているのに「繋がった気がしない」場合、実際にはアタッチが成立していることが多い。次のサインで確認する。
| 確認場所 | アタッチ成立時のサイン |
|---|---|
実行とデバッグビュー(Ctrl+Shift+D)のコールスタック | デバッグ構成名(例 Attach to Pasta Debug Backend)のセッションが表示される |
| 画面上部 | デバッグツールバー(続行・ステップ・停止)が現れる |
| 画面下端のステータスバー | デバッグ中の色(既定テーマではオレンジ)に変わる |
OS 側からも確認できる。アタッチ中は待ち受けポートに確立済み接続が現れる。
Get-NetTCPConnection -LocalPort 9276 -State Established
行が返れば、クライアント(VSCode)が接続済みである。
アタッチしてもゴーストは固まらない(正常)
最も誤解しやすい点を明示する。アタッチしただけではゴーストは停止せず、通常どおり動作し続ける。 これは不具合ではない。実行が止まるのは、設定したブレークポイントの行が実際に実行された瞬間だけである。したがって「F5 を押してもゴーストが固まらない=失敗」と判断するのは誤りである。接続の成否は、ゴーストの見た目ではなく上記のコールスタック表示や確立済み接続で判断する。
ブレーク中にゴーストが固まること自体の仕組みと注意は 構造的制約と緩和策 を参照する。
代表的な失敗症状と原因
| 症状 | 主な原因 | 対処 |
|---|---|---|
デバッグ種別 pasta は未対応、というエラーが出る | pasta VSCode 拡張が未導入、または拡張の更新後に VSCode を再読込していない | 拡張を導入し、Ctrl+Shift+P →「Developer: Reload Window」で再読込する |
| 構成を選べない・一覧に出ない | launch.json に pasta のアタッチ構成が無い、または必須フィールドが欠けている | 下記の完全な構成例をそのまま使う |
| 接続拒否(ECONNREFUSED)・接続がすぐ切れる | バックエンドが待ち受けていない、またはポート不一致 | 手順 1 を確認し、有効化側と launch.json のポートをそろえる |
| 接続できたが何も起きない | 正常。ブレークポイント未設定、または実行されない行に設定している | 実行される .pasta 行にブレークポイントを置き、その行が動くイベントを起こす |
確実につながる launch.json(コピーして使う)
必須フィールドが欠けると接続できない。次の構成をそのまま .vscode/launch.json に使う。各フィールドの意味は VSCode 接続と拡張導入 を参照する。
{
"version": "0.2.0",
"configurations": [
{
"type": "pasta",
"request": "attach",
"name": "Attach to Pasta Debug Backend",
"host": "127.0.0.1",
"port": 9276,
"sourcePresentation": "pasta"
}
]
}
ね、順番に潰していけば、必ず原因にたどり着けますの。フンッ、別にあなたが投げ出さなかったことを偉いだなんて言っていませんわよ。……でも、つまずいた経験は何よりの財産ですわ。次は自信を持って、堂々とブレークさせてやりましょう。さあ、参りますわよ!