Start Debugging

Visual Studio 18.5 の Debugger Agent が Copilot を生きたバグ狩りパートナーに変える

Visual Studio 18.5 GA は Copilot Chat でガイド付き Debugger Agent ワークフローを出荷し、仮説を立て、ブレークポイントを設定し、repro に同行し、ランタイム状態に対して検証し、fix を提案します。

Visual Studio チームは 2026 年 4 月 15 日の Visual Studio 18.5 GA で 新しい Debugger Agent ワークフロー を出荷しました。過去 1 年間 Copilot に「なぜこれが null なのか」と聞いて、実際の call stack と矛盾する自信満々の推測を返されてきたなら、このリリースがその訂正です。Agent はもはやソースファイルを読むチャットボットではありません。対話的なデバッグセッションを操縦し、自分のブレークポイントを設定し、生きたランタイム状態に対して推論します。

静的解析だけでは足りなかった

以前のイテレーションの Debug with Copilot は例外アシスタンスや「このスタックフレームを説明して」スタイルのプロンプトには便利でしたが、コードの凍結されたスナップショット上で動作していました。実際の不具合が 2 つの非同期 continuation 間の race や 15 回目のクリック後にしか存在しない状態に宿っていると、MyService.cs の静的な読み取りではそれを見ることが単にできませんでした。VS 18.5 は agent を実際の repro に参加させることでそのギャップを埋めます。

4 フェーズのループ

solution を開いたら、Copilot Chat を Debugger モードに切り替えてバグの説明を渡します。ワークフローは順番に 4 つのフェーズを歩きます:

  1. 仮説と準備。 Agent は説明とコードを分析して root cause 理論を提案します。それから怪しいパスに「intelligent breakpoints」を設定し、プロジェクトを起動する提案をします。起動が特殊な場合は手動で起動して agent をアタッチさせることもできます。
  2. アクティブな再現。 Agent はあなたが repro をクリックで進む間、回線上にとどまります。各ブレークポイント ヒット時にランタイム状態を観察していて、ファイルを読み直しているのではありません。
  3. リアルタイムの検証。 各停止で locals と call stack を評価して仮説を確認または除外します。間違った推測は弁護されるのではなく、証拠に基づいて破棄されます。
  4. 最終的な fix。 Agent が原因を見つけたと確信したら、コード変更を提案します。承認すると編集を適用し、バグが消えたことを検証するためにセッションを再実行します。

18.5 GA ドロップでのサポート対象シナリオは “exceptions, logic inconsistencies, and state corruption” です。パフォーマンス回帰と並行性のみのバグはまだそのリストにありません。

セッションはどう見えるか

古典的な null-ref のミニマルなウォークスルーはこんな風に見えます:

You: The app throws NullReferenceException when saving a new invoice
     with no line items. Repro: open /invoices/new, click Save.

Agent: Hypothesis - Invoice.Total() dereferences LineItems before the
       collection is initialised for empty invoices.
       Setting breakpoints at InvoiceService.cs:42 and Invoice.cs:18.
       Launching IIS Express on https://localhost:7080 ...

repro を走らせます。Invoice.cs:18 のブレークポイントがヒットし、agent はスタックフレームから this.LineItems を読み、空リストではなく null を見て、あなたにステップを要求することなく仮説を確認します。そして提案します:

public decimal Total() =>
    (LineItems ?? []).Sum(li => li.Quantity * li.UnitPrice);

承認すると、シナリオを再実行して例外が消えたことを確認します。

なぜそれが重要か

ここでの興味深いシフトは、agent がランタイムの真実に根差していることです。まだ上書きしたり、ブレークポイントを無視したり、手動でデバッグしたりできます - セキュリティに敏感なものや不慣れなコードにとってはそれが正しいデフォルトです。しかし「repro と stack trace があって state を二分探索する必要がある」というロングテールに対して、バグ報告から検証済み fix までのループが劇的に短くなります。デバッグ時間のより多くが、自分でブレークポイントを置くよりも agent の証拠をレビューすることに費やされると期待してください。

機能は今日 VS 18.5 GA にあります。まだ 17.x か以前の 18.x preview にいるなら、古いチャットスタイルの Debug with Copilot があなたの持つものです。ガイド付きワークフローは 18.5 を要求します。

< 戻る