このドキュメントでは、Visual Studio のデバッグ機能に関してよく寄せられる質問について説明します。 また、デバッグ タスクまたは問題を Visual Studio デバッガーの関連機能にマップします。 これらのリンクには、マルチスレッド アプリケーションのデバッグ、コード ナビゲーション、メモリ リーク、変数の検査、ブレークポイントの使用、外部コードのデバッグなどのタスクや問題が含まれています。 デバッガー機能の概要が必要な場合は、「最初にデバッガーの を確認する」を参照してください。
ブレークポイント
実行中のコードを一時停止して、バグが含まれている可能性のあるコード行を検査するにはどうすればよいですか?
ブレークポイントを設定します。 詳細については、「適切な種類のブレークポイント を使用する」および「ブレークポイント の概要」を参照してください。
特定の条件に基づいてコードの実行を一時停止するにはどうすればよいですか?
適切な種類のブレークポイントを設定します。 詳細については、「適切な種類のブレークポイントを使用する」を参照してください。
コードを変更したり停止したりせずに、構成可能な条件下で情報を出力ウィンドウに記録するにはどうすればよいですか?
Tracepoints を使用すると、コードを変更または停止することなく、構成可能な条件下で情報を出力ウィンドウに記録できます。 詳細については、「Visual Studio デバッガーでトレースポイントを使用する を参照してください。
ブレークポイントの管理と追跡
特定の処理された例外または未処理の例外がスローされたときにコードを一時停止してデバッグ
例外ヘルパーにはエラーが発生した場所が表示されますが、特定のエラーを一時停止してデバッグする場合は、例外がスローされたときに中断するようにデバッガーに指示。
呼び出し履歴からブレークポイントを設定
呼び出し履歴の ウィンドウで実行フローを調べたり、関数を表示したりするときにコードを一時停止してデバッグする場合は、「呼び出し履歴ウィンドウでブレークポイントを設定する」を参照してください。
特定のアセンブリ命令でコードを一時停止
これを行うには、逆アセンブル ウィンドウ からブレークポイントを設定します。
コード内を移動する
デバッグ中にコードをステップ実行するコマンドを学習するにはどうすればよいですか?
詳細については、「デバッガーを使用してコードを移動する」を参照してください。
ブレークポイントを削除したり無効にしたりせずに、特定の行にコードを実行することはできますか?
これらのシナリオでは、"Force Run To Cursor" を使用できます。 ブレークポイントは保持でき、デバッガーはカーソルを持つコード行に到達するまでそれらをスキップします。 また、最初に発生する可能性のある例外の中断条件もスキップします。 詳細については、「デバッガーを使用してコードを移動する」を参照してください。
コード行に異なるメソッドの呼び出しがある場合、特定のメソッドにステップインできますか?
コード行を右クリックすると、コンテキスト メニューが表示され、[ステップ イン 固有] を選択できます。 これにより、ステップインできるすべてのメソッドの一覧が表示されます。 目的の方法を選択できるようになりました。
データの検査と視覚化
アプリの実行中に変数の値を確認するにはどうすればよいですか?
特定の変数の値の変化を確認できますか?
変数にウォッチを設定します。 詳細については、「変数にウォッチを設定する」を参照してください。
デバッガー ウィンドウに長すぎる文字列を表示するにはどうすればよいですか?
文字列ビジュアライザーには、データ ヒントまたはデバッガー ウィンドウに長すぎる文字列が表示されます。 また、形式が正しくない文字列を識別するのにも役立ちます。
Visual Studio の組み込みの 文字列ビジュアライザー には、テキスト、XML、HTML、JSON のオプションが含まれます。大規模なコレクション オブジェクトを表示する方法
DataSet ビジュアライザーを使用すると、DataSet、DataTable、DataView、または DataViewManager の内容を表示できます。 IEnumerable ビジュアライザーを使用すると、配列、リストなどのオブジェクトを表示できます。詳細については、「表形式ビジュアライザー する」を参照してください。
既に実行されているアプリをデバッグする
ローカル コンピューターまたはリモート コンピューターで実行中のアプリをデバッグする方法、複数のプロセスを同時にデバッグする方法、Visual Studio で作成されていないアプリをデバッグする方法、Visual Studio から起動しなかったアプリをデバッグする方法を教えてください。
実行中のプロセス にアタッチするを参照してください。
同じアプリケーションに繰り返しアタッチするにはどうすればよいですか?
再アタッチを使用してプロセス (Shift + Alt + P) を使用すると、毎回 [プロセスにアタッチ] ダイアログを表示しなくても、1 回のクリックでアプリケーションのデバッグを簡単に開始できます。 プロセス への再アタッチの を参照してください
マルチスレッド アプリケーションをデバッグする
メモリの分析
アプリケーションにメモリ リークがありますか?
スナップショットを作成し、メモリ ツールで開いてトラブルシューティングを進める。 「メモリ使用量を測定する」を参照してください。
ネイティブ またはマネージド アプリケーションのメモリ使用量を分析する方法
ライブ デバッグ、ヒープ ダンプ、またはパフォーマンス プロファイラーを使用して、Visual Studio メモリ ツールを使用します。
「メモリ分析ツールを選択する」を参照してください。デバッガーをアタッチせずにネイティブ アプリケーションまたはマネージド アプリケーションのメモリ使用量を分析するにはどうすればよいですか? メモリ使用量ツールを有効にして、Visual Studio パフォーマンス プロファイラーを使用します。
「メモリ使用量のを分析する」を参照してください。2 つの時点のメモリ使用量を比較できますか。
メモリ ツールのスナップショットを比較するか、差分機能を使用して 2 つのヒープ ダンプを比較します。 「メモリ使用量のを分析する」を参照してください。
外部コードのデバッグ
デバッグ中にユーザー コードのみを表示できますか?
マイ コードのみは、システム、フレームワーク、およびその他の非ユーザー コードの呼び出しを自動的にステップオーバーする Visual Studio デバッグ機能です。 [呼び出し履歴] ウィンドウの [マイ コードのみ] では、これらの呼び出しが [外部コード] フレームに折りたたまれます。 「マイ コードのみ を使用してユーザー コードのみをデバッグする を参照してください
プログラムが実行している生のアセンブリ命令を表示またはデバッグするにはどうすればよいですか?
[デバッグ] から [逆アセンブル] ウィンドウを使用 >、Windows > 逆アセンブルします。 一度に 1 つの命令をステップ オーバーしたり、個々のアセンブリ命令にブレークポイントを設定したりできます。
.NET ライブラリのソース コードを確認できますか?
.NET ライブラリのシンボルとソースをダウンロードするには、デバッグ > オプション > シンボルから Microsoft シンボル サーバーを有効にします。 シンボル の指定 を参照してください
特定の場所または共有の場所またはサーバーから PDB を読み込む方法
デバッグ > オプション > シンボルからシンボル サーバーを構成します。 シンボル の指定 を参照してください
特定の PDB を読み込む方法 または、常に読み込むにはどうすればよいですか?
デバッグ > オプション > シンボルでインクルード リストと除外リストを構成します。
シンボル の指定 を参照してください
デバッグの構成
デバッガーの設定を構成する方法
デバッガー オプションとデバッガー プロジェクトの設定を構成するには、「デバッガーの設定と準備の 」を参照してください。
デバッガーに表示される情報をカスタマイズする方法
オブジェクトの種類以外の情報を、異なるデバッガー ウィンドウの値として表示できます。 C#、Visual Basic、F#、および C++/CLI コードの場合は、DebuggerDisplay 属性を使用します。 より高度なオプションについては、カスタム ビジュアライザーを作成して UI をカスタマイズすることもできます。 ネイティブ C++ の場合は、NatVis フレームワークを使用します。
その他のタスク
ダンプを保存する必要がありますか?
デバッグ中にエラーまたはブレークポイントで停止している間は、[デバッグ] > [としてダンプを保存]選択します。 ダンプ ファイルの を参照してください
ダンプ ファイルを分析する方法
Visual Studio で [ファイル] > [ を開く] を選択して、ダンプを開きます。 デバッグを開始するには、[マネージド のみ でデバッグ、ネイティブのみ でデバッグ、混合 でデバッグをするか、マネージド メモリ を使用したデバッグをします。 ダンプ ファイルの を参照してください
デバッグ セッション中にコードを編集できますか?
編集を使用し、続行します。 XAML の場合は、XAML ホット リロードを使用します。
リモート コンピューターでデバッグする方法
パフォーマンスの問題を解決する方法
プロファイリング ツール 最初に確認する を参照してください
例外を修正する方法
「例外を修正する」を参照してください。