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 つのフェーズを歩きます:
- 仮説と準備。 Agent は説明とコードを分析して root cause 理論を提案します。それから怪しいパスに「intelligent breakpoints」を設定し、プロジェクトを起動する提案をします。起動が特殊な場合は手動で起動して agent をアタッチさせることもできます。
- アクティブな再現。 Agent はあなたが repro をクリックで進む間、回線上にとどまります。各ブレークポイント ヒット時にランタイム状態を観察していて、ファイルを読み直しているのではありません。
- リアルタイムの検証。 各停止で locals と call stack を評価して仮説を確認または除外します。間違った推測は弁護されるのではなく、証拠に基づいて破棄されます。
- 最終的な 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 を要求します。