Share via


チュートリアル: Visual Studio for Mac を使用して .NET コンソール アプリケーションをデバッグする

重要

Microsoft は、Visual Studio for Mac の提供終了を発表しました。 Visual Studio for Mac は、2024 年 8 月 31 日でサポートが終了します。 代替手段は次のとおりです。

詳細については、「Visual Studio for Mac 提供終了のお知らせ」を参照してください。

このチュートリアルでは、Visual Studio for Mac で使用できるデバッグ ツールについて説明します。

前提条件

デバッグ ビルド構成の使用

"デバッグ" と "リリース" は、Visual Studio の組み込みビルド構成です。 デバッグ用のデバッグ ビルド構成と、最終リリース配布用のリリース構成を使用します。

デバッグ構成では、プログラムのコンパイルにシンボリック デバッグ情報が完全に含まれ、最適化は行われません。 ソース コードと生成された命令の関係は非常に複雑であり、最適化を行うとデバッグが困難になるためです。 プログラムのリリース構成は、シンボリック デバッグ情報を含まず、完全に最適化されます。

既定では、Visual Studio for Mac ではデバッグ ビルド構成が使用されるため、デバッグの前に変更を加える必要はありません。

  1. Visual Studio for Mac を起動します。

  2. Visual Studio for Mac を使用して .NET コンソール アプリケーションを作成する」で作成したプロジェクトを開きます。

    現時点のビルド構成はツールバーに表示されています。 次のツール バーの画像では、アプリのデバッグ バージョンをコンパイルするように Visual Studio が構成されています。

    Visual Studio toolbar with debug highlighted

ブレークポイントの設定

"ブレークポイント" によって、ブレークポイントを含む行が実行される前に、アプリケーションの実行が一時的に中断されます。

  1. 名前、日付、および時刻を表示する行にブレークポイントを設定します。 これを行うには、コード行にカーソルを置き、\ (command+\) キーを押します。 ブレークポイントを設定するもう 1 つの方法は、メニューから [デバッグ]>[ブレークポイントの設定/解除] を選択することです。

    Visual Studio では、ブレークポイントが設定された行を強調表示し、左余白に赤い点を表示することで、その行が示されます。

    Visual Studio Program window with breakpoint set

  2. (command+enter) キーを押して、デバッグ モードでプログラムを起動します。 デバッグを開始するもう 1 つの方法は、メニューから [デバッグ]>[デバッグの開始] を選択することです。

  3. プログラムから名前の入力を求められたら、ターミナル ウィンドウに文字列を入力して、enter キーを押します。

  4. プログラムの実行は、ブレークポイントに到達するときに、Console.WriteLine メソッドが実行される前に停止します。

    Screenshot of a breakpoint in Visual Studio

[イミディエイト] ウィンドウを使用する

[イミディエイト] ウィンドウでは、デバッグ中のアプリケーションと対話できます。 変数の値を対話的に変更して、プログラムにどのような影響があるかを確認できます。

  1. [イミディエイト] ウィンドウが表示されない場合は、[表示]>[Windows のデバッグ]>[イミディエイト] の順に選択して表示します。

  2. [イミディエイト] ウィンドウに「name = "Gracie"」と入力し、enter キーを押します。

  3. [イミディエイト] ウィンドウに「currentDate = currentDate.AddDays(1)」と入力し、enter キーを押します。

    [イミディエイト] ウィンドウに、文字列変数の新しい値と、DateTime 値のプロパティが表示されます。

    Immediate Window in Visual Studio

    [ローカル] ウィンドウには、現在実行しているメソッドで定義されている変数の値が表示されます。 変更したばかりの変数の値は [ローカル] ウィンドウで更新されます。

    Locals Window in Visual Studio

  4. (command+enter) キーを押してデバッグを続行します。

    ターミナルに表示される値は、[イミディエイト] ウィンドウで行った変更に対応しています。

    ターミナルが表示されない場合は、下部のナビゲーション バーで [Terminal - HelloWorld]\(ターミナル - HelloWorld\) を選択します。

    Terminal - Hello World in bottom navigation bar

  5. 任意のキーを押してプログラムを終了します。

  6. ターミナル ウィンドウを閉じます。

条件付きブレークポイントの設定

プログラムによって、ユーザーが入力する文字列が表示されます。 ユーザーが何も入力しないとどうなるでしょうか。 これは、"条件付きブレークポイント" と呼ばれる便利なデバッグ機能を使用してテストできます。

  1. ctrl キーを押しながら、ブレークポイントを表す赤い点をクリックします。 コンテキスト メニューで [ブレークポイントの編集] を選択します。

  2. [ブレークポイントの編集] ダイアログで、[さらに次の条件が真の場合] の後に続くフィールドに次のコードを入力して、[適用] を選択します。

    String.IsNullOrEmpty(name)
    

    Editor showing breakpoint settings panel

    ブレークポイントにヒットするたびに、デバッガーは String.IsNullOrEmpty(name) メソッドを呼び出し、メソッド呼び出しが true を返す場合にのみ、この行で中断します。

    条件式の代わりに、"ヒット カウント" を指定できます。この場合、ステートメントが指定された回数実行される前にプログラムの実行が中断されます。

  3. (command+enter) キーを押してデバッグを開始します。

  4. ターミナル ウィンドウで、名前の入力を求められたら、enter キーを押します。

    指定した条件 (namenull または String.Empty) が満たされたため、ブレークポイントに到達すると、プログラムの実行が停止します。

  5. [ローカル] ウィンドウを選ぶと、現在実行しているメソッドに対してローカルな変数の値が表示されます。 この場合、Main は現在実行中のメソッドです。 name 変数の値が "" (つまり、String.Empty) であることを確認します。

  6. 値が空の文字列であることは、[イミディエイト] ウィンドウに name という変数名を入力して enter キーを押すことでも確認できます。

    Immediate window showing name is an empty string

  7. (command+enter) キーを押してデバッグを続行します。

  8. ターミナル ウィンドウで、任意のキーを押してプログラムを終了します。

  9. ターミナル ウィンドウを閉じます。

  10. コード ウィンドウの左余白の赤い点をクリックして、ブレークポイントをクリアします。 ブレークポイントをクリアするもう 1 つの方法は、コード行が選択されている間に [デバッグ] > [ブレークポイントの設定/解除] を選択することです。

プログラムのステップ実行

Visual Studio では、1 行ずつプログラムをステップ実行して、実行を監視することもできます。 通常は、ブレークポイントを設定して、プログラム コードのごく一部を通じてプログラム フローに従います。 このプログラムは小さいため、次の手順に従ってプログラム全体をステップ実行できます。

  1. Main メソッドの開始を示す中かっこにブレークポイントを設定します (command+\ キーを押す)。

  2. (command+enter) キーを押してデバッグを開始します。

    ブレークポイントがある行で Visual Studio が停止します。

  3. I (shift+command+I) キーを押すか、[デバッグ]>[ステップ イン] を選択して、1 行進めます。

    次に実行される行が強調表示されて、横に矢印が表示されます。

    Visual Studio step into method

    この時点で、[ローカル] ウィンドウに args 配列が空であることが示され、namecurrentDate には既定値が設定されています。 さらに、Visual Studio によって空のターミナルが開かれています。

  4. I (shift+command+I) キーを押します。

    name の変数代入を含むステートメントが強調表示されます。 [ローカル] ウィンドウに namenull であると表示され、ターミナルに "What is your name?" という文字列が表示されます。

  5. コンソール ウィンドウに文字列を入力して enter キーを押すことで、このプロンプトに応答します。

  6. I (shift+command+I) キーを押します。

    currentDate の変数代入を含むステートメントが強調表示されます。 [ローカル] ウィンドウには、Console.ReadLine メソッドの呼び出しによって返された値が表示されます。 ターミナルには、プロンプトで入力した文字列が表示されます。

  7. I (shift+command+I) キーを押します。

    [ローカル] ウィンドウには、DateTime.Now プロパティから代入された後の currentDate 変数の値が表示されます。 ターミナルは変更されません。

  8. I (shift+command+I) キーを押します。

    Visual Studio は、Console.WriteLine(String, Object, Object) メソッドを呼び出します。 ターミナルには、書式設定された文字列が表示されます。

  9. U (shift+command+U) キーを押すか、[実行]>[ステップ アウト] を選択します。

    ターミナルにメッセージが表示され、任意のキーを押すよう求められます。

  10. 任意のキーを押してプログラムを終了します。

リリース ビルド構成を使用する

アプリケーションのデバッグ バージョンのテストが終了したら、リリース バージョンもコンパイルしてテストする必要があります。 リリース バージョンには、アプリケーションの動作に悪影響を与える可能性があるコンパイラの最適化が組み込まれています。 たとえば、パフォーマンスを向上させるように設計されたコンパイラの最適化では、マルチスレッド アプリケーションで競合状態が生じる場合があります。

コンソール アプリケーションのリリース バージョンをビルドしてテストするには、次の手順を実行します。

  1. ツール バーのビルド構成を [デバッグ] から [リリース] に変更します。

    default Visual Studio toolbar with release highlighted

  2. (option+command+enter) キーを押して、デバッグなしで実行します。

次のステップ

このチュートリアルでは、Visual Studio のデバッグ ツールを使用しました。 次のチュートリアルでは、アプリの展開可能なバージョンを発行します。