クイック スタート: Visual Studio デバッガーを使用して C++ でデバッグする
Visual Studio デバッガーでは、アプリのデバッグに役立つ多くの強力な機能が提供されます。 このトピックでは、基本的な機能のいくつかを簡単に紹介します。
新しいプロジェクトの作成
Visual Studio を開き、プロジェクトを作成します。
Esc キーを押してスタート ウィンドウを閉じます。 Ctrl + Q キーを押して検索ボックスを開き、「c++」と入力し、[テンプレート]、[新しいコンソール アプリ プロジェクトの作成] の順に選択します。 表示されたダイアログ ボックスで、 [作成] を選択します。
[Windows コンソール アプリケーション] プロジェクト テンプレートが表示されない場合は、[ツール]>[ツールと機能を取得...] に移動して、Visual Studio インストーラーを開きます。 Visual Studio インストーラーが起動します。 [C++ によるデスクトップ開発] ワークロード、 [変更] の順に選択します。
Visual Studio によってプロジェクトが作成されます。
MyDbgApp.cpp で、次のコードを置換します
int main() { return 0; }
このコードで置換します (
#include "stdafx.h"
は削除しないでください)。#include <list> #include <iostream> using namespace std; void doWork() { list <int> c1; c1.push_back(10); c1.push_back(20); const list <int> c2 = c1; const int &i = c2.front(); const int &j = c2.front(); cout << "The first element is " << i << endl; cout << "The second element is " << j << endl; } int main() { doWork(); }
ブレークポイントの設定
ブレークポイントは、Visual Studio で実行コードが中断される場所を示すマーカーです。これにより、変数の値またはメモリの動作を確認したり、コードの分岐が実行されるかどうかを確認したりすることができます。 これが、デバッグの最も基本的な機能です。
ブレークポイントを設定するには、
doWork
関数呼び出しの左側の余白をクリックします (またはコード行を選択して、F9 キーを押します)。ここで F5 キーを押します (または [デバッグ] > [デバッグの開始] の順に選択します)。
ブレークポイントを設定した場所でデバッガーが一時停止します。 デバッガーとアプリの実行が一時停止されているステートメントが、黄色の矢印で示されます。
doWork
関数呼び出しがある行はまだ実行されていません。ヒント
ループまたは再帰処理の中にブレークポイントがある場合、または頻繁にステップ実行するブレークポイントが数多くある場合、条件付きブレークポイントを使用して、特定の条件が満たされる場合にのみコードが中断されるようにしてください。 条件付きブレークポイントでは時間が節約され、再現が難しい問題をより簡単にデバッグすることもできます。
C++ でメモリ関連エラーのデバッグを試みる場合、ブレークポイントを使用して、アドレス値 (NULL を検索) と参照カウントを検査することもできます。
コード間の移動
続行するようにデバッガーに指示するためのさまざまなコマンドがあります。 ここでは、Visual Studio 2017 以降で使用できる便利なコード ナビゲーション コマンドを示します。
ブレークポイントで一時停止中に、緑色の [実行] ボタン が表示されるまでステートメント c1.push_back(20)
にカーソルを合わせ、[実行] ボタンをクリックします。
アプリは引き続き実行され、doWork
が呼び出され、ボタンをクリックしたコード行で一時停止します。
コードのステップ実行に使用される一般的なキーボード コマンドには、F10 と F11 が含まれます。 詳しい手順については、「デバッガーでのはじめに」をご覧ください。
データヒントの変数を検査する
(黄色の実行ポインターでマークされた) コードの現在の行で、
c1
オブジェクトをマウスでポイントしてデータヒントを表示します。データヒントでは、
c1
変数の現在の値が示され、そのプロパティを検査することができます。 デバッグ中に、予期しない値が表示される場合は、先行するコード行または呼び出しているコード行にバグがある可能性があります。データヒントを展開して、
c1
オブジェクトの現在のプロパティ値を確認します。コードを実行している間に
c1
の値を引き続き表示できるようにデータヒントをピン留めする場合は、小さいピン アイコンをクリックします (ピン留めしたデータヒントを任意の場所に移動することができます)。
コードを編集してデバッグを続行する
デバッグ セッションの途中にコードでテストする変更を識別する場合は、そのようにすることもできます。
c2.front()
の 2 番目のインスタンスをクリックし、c2.front()
をc2.back()
に変更します。F10 キー (または [デバッグ] > [ステップ オーバー]) を数回押して、デバッガーを進めて編集したコードを実行します。
F10 キーでは、デバッガーは一度に 1 ステートメントずつ進みますが、関数をステップインするのではなく、ステップ オーバーします (スキップしたコードがまだ実行される)。
エディット コンティニュの使用および機能制限の詳細については、エディット コンティニュに関するページを参照してください。
次のステップ
このチュートリアルでは、デバッガーを起動する方法、コードをステップ実行する方法、変数を確認する方法について学習しました。 必要に応じて、デバッガー機能の概要と、詳細情報へのリンクを取得します。