演習 - デバッグ環境でコードを実行する

完了

Visual Studio Code ユーザー インターフェイスを使用すると、開発者はデバッグ環境でコードを実行できます。 デバッグのサポートは拡張機能によって提供され、C# 開発者の場合、デバッガーのサポートは、コード開発と IntelliSense のサポートを提供するのと同じ拡張機能によって提供されます。

デバッガーとアプリケーションの対話

コード デバッガーを使用すると、コードの実行を一時停止および再開したり、変数の状態を調べたり、実行時に変数に割り当てられた値を変更したりできます。 デバッガーで実行中のアプリケーションをどのように制御および変更できるか疑問に思うかもしれません。 簡単に言えば、デバッガーはアプリケーションのランタイム環境と実行可能コードにアクセスできます。

ランタイム環境とのデバッガーの対話は、高度なトピックです。 また、デバッガーのバックグラウンドでの動作を理解することは、デバッガーを使用するための要件ではありません。 しかし、以下の説明はあなたの好奇心を満たすかもしれません。

C# 用 Visual Studio Code デバッガーは、.NET Core ランタイムを使用してアプリケーションを起動し、操作します。 デバッガーを起動すると、ランタイムの新しいインスタンスが作成され、そのインスタンス内でアプリケーションが実行されます。 ランタイムには、実行中のプロセス (アプリケーション) にアタッチするためにデバッガーが使用するアプリケーション プログラミング インターフェイス (API) が含まれています。

アプリケーションが実行され、デバッガーがアタッチされると、デバッガーは、.NET Core ランタイムのデバッグ API と標準デバッグ プロトコルを使用して実行中のプロセスと通信します。 デバッガーは、ブレークポイントの設定、コードのステップ実行、変数の検査によって、プロセス (.NET ランタイム インスタンス内で実行されているアプリケーション) と対話できます。 Visual Studio Code のデバッガー インターフェイスを使用すると、ソース コード内を移動したり、呼び出し履歴を表示したり、式を評価したりできます。

デバッグ セッションを指定する最も一般的な方法は、launch.json ファイル内の起動構成です。 この方法は、デバッガー ツールで有効になっている既定のオプションです。 たとえば、C# コンソール アプリケーションを作成し、[実行] メニューから [デバッグの開始] を選択した場合、デバッガーはこの方法を使用してアプリケーションを起動、アタッチ、操作します。

新しいコード プロジェクトを作成する

デバッガー ツールを学習する最初の手順は、デバッガーで実行できるコード プロジェクトを作成することです。

  1. Visual Studio Code の新しいインスタンスを開きます。

  2. [ ファイル ] メニューの [ フォルダーを開く] を選択します。

  3. [ フォルダーを開く] ダイアログで、Windows デスクトップ フォルダーに移動します。

  4. [ フォルダーを開く ] ダイアログで、[ 新しいフォルダー] を選択します。

  5. 新しいフォルダーに Debug101 という名前を付け、[フォルダーの選択] を 選択します

  6. [ ターミナル ] メニューの [ 新しいターミナル] を選択します。

    .NET CLI コマンドを使用して、新しいコンソール アプリを作成できます。

  7. TERMINAL パネルのコマンド プロンプトで、次のコマンドを入力します。

    dotnet new console
    
  8. [ターミナル] パネルを閉じます。

デバッグ用の起動構成を調べる

Visual Studio Code では、起動構成ファイルを使用して、デバッグ環境で実行されるアプリケーションを指定します。

  1. Debug101 フォルダーにDebug101.sln ファイルが含まれていない場合は、 Program.csを選択し、.sln ファイルが作成されていることを確認します。

    C# コード ファイルを開くと、環境でプロジェクト ファイルを確認するように求められます。 .sln ファイルは、Visual Studio でプロジェクトを管理するために使用されるソリューション ファイルであり、通常は Visual Studio Code で新しいプロジェクトを作成するときに自動的に作成されます。 .sln ファイルは、デバッグ環境で実行する必要があるプロジェクトを識別するためにデバッガーによって使用されます。

  2. [表示] メニューの [ コマンド パレット] を選択します。

  3. コマンド プロンプトで、「 .net: g」 と入力し、[ .NET: Build and Debug のアセットの生成] を選択します。

  4. プロジェクト フォルダーに追加された新しい .vscode フォルダーに注目してください。

    エクスプローラーの .vscode フォルダーを示すスクリーンショット。

    .vscode フォルダーには、デバッグ環境の構成に使用されるファイルが含まれています。

  5. .vscode フォルダーを展開し、launch.json ファイルを選択します。

  6. launch.json ファイルを調べるのに少し時間がかかります。

    起動構成ファイルには、複数の構成を含めることができます。 各構成には、その構成を定義するために使用される属性のコレクションが含まれています。

  7. prelaunchTask 属性でビルド タスクが指定されていることに注意してください。

  8. .vscode フォルダーで、[tasks.json] を選択します。

  9. tasks.json ファイルにコード プロジェクトの ビルド タスクが含まれていることに注意してください。

  10. launch.json ファイルと tasks.jsonファイルを閉じます。

起動構成属性については、このモジュールの後半で詳しく説明します。

[実行] メニューからコードを実行する

Visual Studio Code の [ 実行 ] メニューには、デバッガーの有無に関係なくコードを実行するオプションが用意されています。

  1. Program.cs ファイルを開きます。

  2. Program.cs ファイルの内容を次のコードに置き換えます。

    /* 
    This code uses a names array and corresponding methods to display
    greeting messages
    */
    
    string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" };
    
    string messageText = "";
    
    foreach (string name in names)
    {
        if (name == "Sophia")
            messageText = SophiaMessage();
        else if (name == "Andrew")
            messageText = AndrewMessage();
        else if (name == "AllGreetings")
            messageText = SophiaMessage();
            messageText = messageText + "\n\r" + AndrewMessage();
    
        Console.WriteLine(messageText + "\n\r");
    }
    
    bool pauseCode = true;
    while (pauseCode == true);
    
    static string SophiaMessage()
    {
        return "Hello, my name is Sophia.";
    }
    
    static string AndrewMessage()
    {
        return "Hi, my name is Andrew. Good to meet you.";
    }
    
  3. [ ファイル ] メニューの [ 保存] を選択します。

  4. [ 実行 ] メニューを開きます。

    [ 実行 ] メニューには、デバッグの有無にかかわらずコードを実行するためのオプションが用意されています。

  5. [実行] メニューの [デバッグなしで実行] を選択します。

  6. [デバッグ コンソール] パネルにコンソール出力が表示され、[ デバッグ] ツール バー に実行コントロールが表示されていることに注意してください。

    コード エディターの下に [デバッグ コンソール] パネルが表示されます。 既定では、 デバッグ ツール バー (コード実行コントロールを表示する小さなツール バー) は、コード エディターの上にあり、Visual Studio Code ウィンドウの中央に水平方向に配置されます。

  7. [ デバッグ] ツール バーの [ 停止] を選択します。

[実行] メニューからデバッグ セッションを開始する

[ 実行 ] メニューには、デバッグ セッションを開始するオプションが含まれています。

  1. [実行] メニューの [デバッグの開始] を選択します。

  2. デバッグ コンソール パネルに表示されるメッセージを確認するには、少し時間がかかります。

    アプリケーションからの出力は、デバッグなしで実行した場合と同じですが、デバッグ環境の準備に関連する他のメッセージが表示されます。

  3. .NET リソースと Debug101 アプリケーションの読み込みに関するメッセージに注目してください。

    最初の 2 つのメッセージは、.NET Core ライブラリと Debug101 アプリケーションの読み込みを報告します。

    Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\7.0.4\System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    Loaded 'C:\Users\someuser\Desktop\Debug101\bin\Debug\net7.0\Debug101.dll'. Symbols loaded.
    

    デバッガーでは、.NET ランタイムの特殊なインスタンスを使用して、アプリケーションの実行を制御し、アプリケーションの状態を評価します。

  4. [ デバッグ] ツール バーの [ 停止] を選択します。

[実行とデバッグ] ビューからコードを実行する

Visual Studio Code の RUN AND DEBUG ビューでは、豊富なデバッグ エクスペリエンスがサポートされています。

  1. [実行とデバッグ] ビューに切り替えます。

    [実行とデバッグ] ビューの [実行] オプションを示すスクリーンショット。

  2. [実行とデバッグ] ビューで、[ デバッグの開始] を選択します。

    [ デバッグの開始 ] ボタンは、ビューの上部にあるコントロール パネルの緑色の矢印です。

  3. デバッグ コンソール パネルには、[ 実行 ] メニューからデバッグ プロセスを開始するときに表示されたデバッガーの構成に関する同じメッセージが表示されます。

  4. [ デバッグ] ツール バーの [ 停止] を選択します。

アプリケーションからの出力を確認する

  1. デバッグ コンソール パネルを閉じる前に、コードによって生成された出力を確認します。

  2. Andrew のあいさつメッセージが予期せず繰り返されていることに注意してください。

このモジュールの残りの部分では、Visual Studio Code デバッガー ツールを使用してコーディングの問題を調査します。

まとめ

このユニットで覚えておく必要があるいくつかの重要な点を次に示します。

  • C# 用 Visual Studio Code デバッガーは、.NET Core ランタイムを使用してアプリケーションを起動し、操作します。
  • Visual Studio Code の [実行 ] メニューには、デバッガーがアタッチされている場合とアタッチされていないアプリケーションを起動するためのオプションがあります。
  • [デバッグ] ツール バーには、実行中のプロセスを停止するためのボタンが含まれています。
  • RUN AND DEBUG ビューには、アプリケーションのデバッグを開始するためのオプションが含まれています。