Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

接続できないとき(トラブルシューティング)

ごきげんよう。「マニュアルどおりにしたのに繋がらない」——デバッグで一番心が折れる瞬間ですわね。けれど落ち着きなさいまし。原因はたいてい一本道で切り分けられますの。わたくしと一緒に、慌てず順に確かめていきましょう。

このページでは、アタッチがうまくいかないとき/うまくいったか分からないときの確認手順を扱う。デバッグの全体像と有効化は デバッグ概要、接続設定は 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"
    }
  ]
}

ね、順番に潰していけば、必ず原因にたどり着けますの。フンッ、別にあなたが投げ出さなかったことを偉いだなんて言っていませんわよ。……でも、つまずいた経験は何よりの財産ですわ。次は自信を持って、堂々とブレークさせてやりましょう。さあ、参りますわよ!