Visual Studio デバッガーのブレークポイントのトラブルシューティング

適用対象: Visual Studio

ブレークポイントの警告

デバッグ時に、 ブレークポイント には次の 2 つの表示状態が考えられます。

  • デバッガーがターゲット プロセスでブレークポイントを正常に設定した場合は、赤い丸が点灯します。
  • ブレークポイントが無効になっているか、ブレークポイントを設定しようとしたときに警告が発生した、空の (白で塗りつぶされた) 円。

違いを特定するには、ブレークポイントにカーソルを合わせて、警告があるかどうかを確認します。 次の 2 つのセクションでは、目立つ警告とその修正方法について説明します。

"このドキュメントのシンボルは読み込まれていません"

デバッグ時に [モジュール] ウィンドウ ([Windows>モジュールデバッグ>]) に移動し、モジュールが読み込まれているかどうかをチェックします。

  • モジュールが読み込まれている場合は、[シンボルの状態] 列をチェックして、シンボルが読み込まれているかどうかを確認します。
    • シンボルが読み込まれていない場合は、シンボルの状態をチェックして問題を診断します。 [ モジュール ] ウィンドウのモジュールのコンテキスト メニューで、[ シンボルの読み込み情報].. . を選択して、デバッガーがシンボルを試して読み込もうとした場所を確認します。 シンボルの読み込みの詳細については、 シンボルの指定 (.pdb) とソース ファイルに関するページを参照してください。
    • シンボルが読み込まれた場合、PDB にはソース ファイルに関する情報は含まれません。 考えられる原因は次のとおりです。
      • ソース ファイルが最近追加された場合は、モジュールの最新バージョンが読み込まれていることを確認します。
      • /PDBSTRIPPED リンカー オプションを使用して、削除された PDB を作成できます。 削除された PDB にはソース ファイル情報が含まれません。 削除された PDB ではなく、完全な PDB を使用していることを確認します。
      • PDB ファイルが部分的に破損しています。 ファイルを削除し、モジュールのクリーン ビルドを実行して、問題の解決を試みます。
  • モジュールが読み込まれていない場合は、次のチェックして原因を見つけます。
    • 適切なプロセスをデバッグしていることを確認します。
    • 正しいコードをデバッグしていることを確認します。 デバッガーがデバッグするように構成されているコードの種類は、[プロセス] ウィンドウ (Windows>プロセスデバッグ>) で確認できます。 たとえば、C# コードをデバッグしようとしている場合は、デバッガーが .NET の適切な型とバージョン (たとえば、マネージド (v4*) と Managed (v2*/v3*) と Managed (CoreCLR) に対して構成されていることを確認します。

"… 現在のソース コードは、組み込まれているバージョンとは異なります。.

ソース ファイルが変更され、ソースがデバッグ中のコードと一致しなくなった場合、デバッガーは既定でコードにブレークポイントを設定しません。 通常、この問題は、ソース ファイルが変更されたが、ソース コードが再構築されなかった場合に発生します。 この問題を解決するには、プロジェクトをリビルドします。 ビルド システムで、プロジェクトが既に最新の状態にあると思われる場合は、プロジェクト システムを強制的に再構築できます。 プロジェクトを再構築するには、ソース ファイルをもう一度保存するか、ビルド前にビルド出力をクリーニングします。

まれなシナリオでは、一致するソース コードを使用せずにデバッグできます。 ソース コードを一致させずにデバッグすると、デバッグ エクスペリエンスが混乱する可能性があるため、続行する方法を確認してください。

次のいずれかのオプションに従って、これらの安全チェックを無効にします。

  • 1 つのブレークポイントを変更するには、エディターのブレークポイント アイコンにカーソルを合わせ、設定 (歯車) アイコンを選択します。 ピーク ウィンドウがエディターに追加されます。 ピーク ウィンドウの上部には、ブレークポイントの場所を示すハイパーリンクがあります。 ハイパーリンクを選択してブレークポイントの場所の変更を許可し、[ソース コードを元のコードと異なることを許可する] をチェックします。
  • すべてのブレークポイントのこの設定を変更するには、[ デバッグ>オプションと設定] に移動します。 [ デバッグ/全般 ] ページで、[元の バージョンと完全に一致するソース ファイルを要求する ] オプションをオフにします。 デバッグが完了したら、このオプションを再度有効にしてください。

ブレークポイントが正常に設定されました (警告なし)、ヒットしませんでした

このセクションでは、デバッガーに警告が表示されない場合の問題のトラブルシューティングに関する情報を提供します。ブレークポイントはアクティブなデバッグ中に赤い丸で、ブレークポイントはヒットしていません。

チェックする必要がある点を次に示します。

  1. コードが複数のプロセスまたは複数のコンピューターで実行されている場合は、適切なプロセスまたはコンピューターをデバッグしていることを確認します。
  2. コードが実行されていることを確認します。 コードが実行されていることをテストするには、ブレークポイントを設定してプロジェクトをリビルドしようとしているコード行に System.Diagnostics.Debugger.Break への呼び出し (C#/VB) または __debugbreak (C++) を追加します。
  3. 最適化されたコードをデバッグする場合は、ブレークポイントが設定されている関数が別の関数にインライン化されていないことを確認します。 Debugger.Break前のチェックで説明したテストでも、この問題をテストできます。
  4. プロセス シナリオにアタッチする場合は、適切な種類のコードをデバッグしていることを確認します (たとえば、スクリプト コードと.NET Frameworkと .NET 5 以降)。 調査するには、[プロセスにアタッチ] ダイアログ ボックスの [アタッチする] オプションをチェックし、必要に応じて [選択] を選択してコードの種類を変更します。

ブレークポイントを削除しましたが、デバッグを再開したときにヒットし続けます

デバッグ中にブレークポイントを削除した場合は、次回デバッグを開始するときにブレークポイントに再度ヒットする可能性があります。 このブレークポイントのヒットを停止するには、ブレークポイントのすべてのインスタンスが [ ブレークポイント ] ウィンドウから削除されていることを確認します。