本トピックでは、Windows 用の Visual 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.
コンテナーを実行する際は、docker run コマンドで通常指定するパラメーターに加えて次のものを指定する必要があります。
- デバッグ対象のアプリケーションがネイティブ COBOL アプリケーションの場合は、コンテナーのデフォルトのエントリ ポイントを上書きするエントリ ポイント cobdebugremote (32 ビット システムの場合) または cobdebugremote64 (64 ビット システムの場合)。これにより、コンテナーの実行時に、デバッグ対象のアプリケーションのエントリ ポイントではなく、リモート デバッグを有効にするために必要なプロセスが開始されるようになります。
- コンテナーがリッスンするポート。コンテナーで DHCP または TCP トンネリングを使用する場合は、イメージの作成時に使用した Dockerfile で EXPOSE コマンドを使用してポートが指定されている必要があります。
たとえば、コンテナー デモンストレーションとして提供されているネイティブ COBOL の Hello World プロジェクトを実行する場合の docker run コマンドの例を次に示します。
docker run -p 6100 --rm
--name helloworld-x64-debug
-v %CD%\src\bin\x64\Debug:c:\app
--workdir c:\app
--entrypoint cobdebugremote64
-it microfocus/edbuildtools:win_9.0_x64
port=6100
上記の docker run コマンドで指定しているパラメーターは次のとおりです。
- -p 6100
- ポート番号 6100 をパブリッシュします。これは、イメージの作成時に使用した Dockerfile で EXPOSE コマンドを使用して指定されている必要があります。
- --rm
- 実行の終了時に自動的にコンテナーを削除するように指定します。
- --name helloworld-x64-debug
- コンテナーで使用する名前を指定します。
- -v %CD%\src\bin\x64\Debug:c:\app
- ローカル フォルダー %CD%\src\bin\x64\Debug をコンテナー内のフォルダー c:\app にマウントします。%CD% は現在のディレクトリを表し、docker run コマンドを Windows バッチ ファイルから実行する場合にのみ使用できます。コマンド ラインからコマンドを実行する場合は、PowerShell の自動変数 ${PWD} を使用するか、現在のディレクトリのフル パスを指定します。
- --workdir c:\app
- コンテナーの作業ディレクトリを設定します。-v パラメーターで指定したフォルダーと同じにする必要があります。
- --entrypoint cobdebugremote64
- リモート デバッグを有効にするために 64 ビットの cobdebugremote64 モジュールを指定します。これはネイティブ COBOL アプリケーションでのみ必要です。
- -it
- コンテナーを対話的に実行するように指定します。
- microfocus/edbuildtools:win_9.0_x64
- 実行するイメージの名前を指定します。この例では、64 ビット Windows 版の Enterprise Developer Build Tools for Windows イメージを指定しています。
- port=6100
- コンテナーのコマンド ライン パラメーターです。
コンテナーの実行時、実行中のアプリケーションがネイティブ COBOL である場合、コンテナーが実行されていて cobdebugremote (または cobdebugremote64) のデバッグ用の接続を準備していることを示す次のようなメッセージが表示されます。
Waiting for a connection on machine IP-address/container-name using port port-number.
Press 'Q' to quit.