コンテナーで実行される .NET COBOL アプリケーションのデバッグ

注: 本トピックの情報は、Docker コンテナーで実行される .NET COBOL アプリケーションのデバッグにのみ適用されます。この機能は、Visual Studio 2017 (またはそれ以降) を使用している場合にのみ使用できます。

本トピックの情報のほとんどは、コンテナー化された COBOL アプリケーションのデバッグに関する一般的な情報について説明した他のトピックにも記載されています。ここでは、それらを要約した情報を示しています。

注: The information in this topic applies to both native COBOL and .NET COBOL applications unless specifically indicated. If you want to use native COBOL in containers, however, Micro Focus recommends using the IDE-based functionality described in コンテナーでのネイティブ COBOL アプリケーションのデバッグおよび実行 as it offers an fully-integrated, easy-to-use debugging experience.

.NET COBOL のサポートを含むイメージの作成

コンテナーで実行される .NET COBOL アプリケーションのデバッグでは、Microsoft リモート ツールのリモート デバッグ機能を使用します。そのため、この目的に使用するイメージを作成するときは、イメージに次の追加ファイルを含める必要があります。

  • リモート デバッガー (Microsoft のリモート ツールに含まれています)。イメージでリモート デバッガーを使用するには、次の手順を実行する必要があります。
    1. リモート ツールのインストーラ (VS_RemoteTools.exe) をイメージのファイルシステムにコピーしてインストールします。

      VS_RemoteTools.exe をまだ入手していない場合は、Microsoft のサイトからダウンロードする (「Microsoft: Remote Debugging a C# or Visual Basic project in Visual Studio」を参照) か、Build_HelloWorld Docker デモンストレーションの bld.bat ファイルに示す Powershell コマンドを使用できます。

    2. PATH を更新して、リモート ツールをインストールしたフォルダーを含めます。
    3. リモート デバッガーを実行します。

    これらの手順を実行するために Dockerfile に含めることができる一般的なコマンドを次に示します。

    COPY VS_RemoteTools.exe "${APPDIR}\\"
    RUN VS_RemoteTools.exe /install /quiet /norestart && \
        del VS_RemoteTools.exe && \
        setx /M PATH "%PATH%;C:\\Program Files\\Microsoft Visual Studio 15.0\\Common7\\IDE\\Remote Debugger\\x64"
    ...
    CMD msvsmon.exe /nostatus /silent /noauth /anyuser /nosecuritywarn
    

    Microsoft のリモート デバッグの詳細については、「Microsoft: Remote Debugging a C# or Visual Basic project in Visual Studio」を参照してください。この記事は C# および Visual Basic について説明したものですが、リモート デバッグを使用する方法は .NET COBOL でもほぼ同じです。

  • MicroFocus.COBOL.ExpressionEvaluator.Remote.dll ファイル。このファイルは Enterprise Developer に付属しており、デフォルトで %Program Files%\Microsoft Visual Studio\2017\Professional\Common 7\IDE\Remote Debugger\x86 または %Program Files%\Microsoft Visual Studio\2017\Professional\Common 7\IDE\Remote Debugger\x64 にインストールされています。関連するファイルをイメージのファイルシステムのリモート デバッガーがインストールされているフォルダーにコピーする必要があります。

    これを行うために Dockerfile に含めることができる一般的なコマンドを次に示します。

    COPY [ "%Program Files%\Microsoft Visual Studio\2017\Professional\Common 7\IDE\Remote Debugger\x64\MicroFocus.COBOL.ExpressionEvaluator.Remote.dll" , "\Program Files\Microsoft
    Visual Studio 15.0\Common7\IDE\Remote Debugger\x64" ]

.NET COBOL のサポートについて、Micro Focus ではデバッグが必要な .NET COBOL アプリケーションを含むイメージのみにインストールすることをお勧めします。これは、サポートを使用しないイメージでディスク スペースや他のリソースが無駄に使用されるのを防ぐためです。

別の方法として、.NET COBOL 固有のバージョンの Enterprise Developer ベース イメージを作成することもできます。これを行うには、Enterprise Developer ベース イメージを用意し、そのイメージに .NET COBOL のサポートを追加します。この方法では、ネイティブ COBOL アプリケーションのデバッグに使用する Enterprise Developer イメージとは別に、.NET COBOL アプリケーションのデバッグに使用する Enterprise Developer イメージを作成することになります。

デバッグ対象の .NET COBOL アプリケーションを含むイメージの起動

デバッグ対象の .NET COBOL アプリケーションを含むイメージを起動する手順はアプリケーションがネイティブの場合と同じですが、次の点が異なります。

  • .NET COBOL のデバッグでは Micro Focus cobdebugremote プロセスは使用しないため、cobdebugremote を起動する代わりにリモート デバッガー (msvsmon.exe) を呼び出す必要があります。

    たとえば、コンテナーのデフォルトのエントリポイントを使用する、Docker Run でエントリポイントを上書きする、Docker exec で起動するなどの方法があります。

  • .NET COBOL アプリケーションの実行可能ファイルおよびシンボル .idy ファイルのフォルダー構造は、ローカル マシンとイメージのファイルシステムで同じにする必要があります。

    そのためには、次のように docker run コマンド オプションで処理できる最上位のフォルダーでボリュームのマウントを行うと最も簡単です。

    -v C:\ManagedCOBOLApp:C:\ManagedCOBOLApp

コンテナーですでに実行されている .NET COBOL アプリケーションのデバッグを開始するには

.NET COBOL アプリケーションを実行しているコンテナーに [Attach to Process] オプションを使用して接続する手順はアプリケーションがネイティブの場合と同じですが、次の点が異なります。

  • [Connection type] フィールドでは、[Remote (no authentication)] (「/noauth」フラグを指定してリモート デバッガー (msvsmon.exe) を呼び出した場合) または [Default] (認証を使用する場合) を指定します。