The Debug Framework contributes Java debug configuration to the application at runtime. Note: This framework is only useful in Diego-based containers with SSH access enabled.
| Detection Criterion | enabled set via JBP_CONFIG_DEBUG or BPL_DEBUG_ENABLED |
| Tags | debug=<port> |
For general information on configuring the buildpack, including how to specify configuration values through environment variables, refer to Configuration and Extension.
The framework can be configured by setting the JBP_CONFIG_DEBUG environment variable. The value must be valid inline YAML. Environment variables BPL_DEBUG_ENABLED and BPL_DEBUG_PORT are also supported and take precedence over JBP_CONFIG_DEBUG.
| Name | Description |
|---|---|
enabled |
Whether to enable Java debugging. Defaults to false. |
port |
The port that the debug agent will listen on. Defaults to 8000. |
suspend |
Whether to suspend execution until a debugger has attached. Note, you cannot ssh to a container until the container has decided the application is running. Therefore when enabling this setting you must also push the application using the parameter -u process which disables container health checking. |
Enable debugging on the default port:
JBP_CONFIG_DEBUG: '{enabled: true}'Enable debugging on a custom port with suspend:
JBP_CONFIG_DEBUG: '{enabled: true, port: 9000, suspend: true}'Using Cloud Native Buildpacks conventions:
BPL_DEBUG_ENABLED=true
BPL_DEBUG_PORT=9000After starting an application with debugging enabled, an SSH tunnel must be created to the container. To create that SSH container, execute the following command:
$ cf ssh -N -T -L <LOCAL_PORT>:localhost:<REMOTE_PORT> <APPLICATION_NAME>The REMOTE_PORT should match the port configuration for the application (8000 by default). The LOCAL_PORT can be any open port on your computer, but typically matches the REMOTE_PORT where possible.
Once the SSH tunnel has been created, your IDE should connect to localhost:<LOCAL_PORT> for debugging.
