Automate Core File Debugging with F5 Next Core Loader

The F5 Next Core Loader utility streamlines the process of debugging core files by automatically verifying the core file’s hash, retrieving the container’s name and version, and fetching the required debugging artifacts (such as source code and symbols) from GitLab and Artifactory. It then initiates a Docker container that is pre-configured with debugging tools like GDB or Delve and attaches the core file, source code, and symbol tables for analysis. This eliminates the need for manual setup and improves the efficiency of debugging, making it easier to diagnose and resolve crashes.

ARM64 Debugging Support

The F5 Next Core Loader utility ensures that when debugging a pod supporting multiple architectures (e.g., arm64), it automatically selects the correct symbols for the core file’s architecture from Artifactory.

Debugging an ARM64 Core File on an ARM64 Server

To debug an ARM64 Core File on an ARM64 Server, follow these steps:

  1. Download the latest F5 Next Core Loader utility from Artifactory.

curl -O https://artifactory.f5net.com/artifactory/pdtools-docker/core-debugger-binary/f5-next-core-loader-linux-arm64-<VERSION>

In this example, 0.1.44 is the version of the F5 Next Core Loader.

curl -O https://artifactory.f5net.com/artifactory/pdtools-docker/core-debugger-binary/f5-next-core-loader-linux-arm64-0.1.44
  1. Download the latest configuration file (config.yml) from  to debug the container core files. This file helps the F5 Next Core utility locate the correct artifacts (source code and symbol files) for each container.

curl -O https://artifactory.f5net.com/artifactory/f5-mbip-docker/core-loader-config/<VERSION>/config.yml

In this example, 1.5.18 is the version of the configuration file.

curl -O https://artifactory.f5net.com/artifactory/f5-mbip-docker/core-loader-config/1.5.18/config.yml
  1. Run the debugging tool.

./f5-next-core-loader-linux-arm64-<VERSION> debug -f <ARM64_CORE_FILE_PATH> --config <CONFIG_FILE>

In this example, 0.1.44 is the version of the F5 Next Core Loader, /var/core/tmm_core.arm64 path of the ARM64 core file to debug, and /home/user/config.yml is the path of the configuration file.

./f5-next-core-loader-linux-arm64-0.1.44 debug -f /var/core/tmm_core.arm64 --config /home/user/config.yml

Available Commands

The lines are:

Usage:

   [command]

Available Commands:

  clean       Cleans the generated artifacts folder. Optional: set --name and --version flags to clean up only that container's artifacts.

  completion  Generate the autocompletion script for the specified shell

  debug       Launches you into a container to inspect a core file. Automatically runs gdb or dlv depending on the corefile's binary process.

  fetch       Fetches the source code and symbol table for the given core file.

  help        Help about any command

  tools       Launches you into a container with debugging tools (gdb, delve) installed to inspect a core file.

  validate    Validates core file with md5sum/sha512sum file.

Flags:

  -b, --binaryProcess string        Binary process name (e.g. mbip-icb)

      --clean                       Add --clean to a debug or tools command to clean up all generated artifacts from this session upon exiting the tool

      --config string               Path to config file (yaml) which defines container to artifact mappings (default "./config.yml")

  -f, --coreFile string             Corefile to process (e.g. ./core.f5-fsm-tmm.xxxx)

  -a, --hashSum string              Corefile md5sum or sha512sum file for validation purpose (e.g. ./core.f5-fsm-tmm.xxxx.sha512)

  -h, --help                        help for this command

  -p, --keyFilePassphrase string    Passphrase to your git private key file, if any

  -k, --keyFilePath string          Path to your git private key file (e.g. ~/.ssh/id_rsa)

  -n, --name string                 Container name (e.g. f5-fsm-tmm)

      --privileged                  Run Docker container with elevated permissions

  -c, --source string               Source code path

  -s, --symbol string               Symbol file path (e.g. .../tmm64.debug or .../mbip-icb.symbols)

      --verbose                     Verbose output. See commands executed and more details about what's going on under the covers

  -v, --version string              Container version (e.g. 0.640.0)

Use " [command] --help" for more information about a command.

Feedback

Provide feedback to improve this document by emailing spkdocs@f5.com.