Running a Container that is to be Debugged

This topic describes how to run a base image and volume mount an application's classes and debug files so that you can debug the application.

Note: This topic does not apply if you are using Visual COBOL Development Hub as a stand-alone development environment.
Note: This topic only applies to using JVM COBOL applications in containers. To use native COBOL applications in containers you need to use the functionality described in Debugging and Running Native COBOL Applications in Containers.

When you run the container, you must make sure that the docker run or podman run command specifies the following in addition to any parameters that you would normally specify:

For example, the following is a docker run command you could use to run the JVM COBOL Hello World project supplied as a container demonstration:

docker run  -p 8000 --rm
--cap-add=SYS_PTRACE 
--name helloworld-x64-debug 
-v /home/user/workspace/simpleproj/New_Configuration.bin:/home/root_docker/app 
--workdir /home/root_docker/app 
-it microfocus/vcdevhub:rhel7_8.0_x64_pu1_login
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 com.microfocus.example.Program1

The parameters specified in the above docker run command are as follows:

-p 8000
Publishes port number 8000.
--rm
Specifies that the container is to be automatically removed when it finishes running.
--name helloworld-x64-debug
Specifies the name to be used for the container.
--cap-add=SYS_PTRACE
Allows debugging inside a Linux container.
-v /home/user/workspace/simpleproj/New_Configuration.bin:/home/root_docker/app
Mounts the local folder /home/user/workspace/simpleproj/New_Configuration.bin into the folder /home/root_docker/app in the container.
--workdir /home/root_docker/app
Sets the working directory for the container. This must be the same folder that is specified by the -v parameter.
-it
Specifies that the container runs interactively.
microfocus/vcdevhub:rhel7_5.0_x64_pu10_login
Specifies the name of the image to run.
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 com.microfocus.example.Program1
Specifies the java command that enables remote debugging for the class com.microfocus.example.Program1 on port 8000.

When the container is running, a message such as the following is displayed to indicate that the container is running and the Java runtime environment is ready to connect for debugging:

Listening for transport dt_socket at address: 8000