Skip to main content

A helper tool for remote debugging on HPC clusters.

Project description

🚀 remote-debug

A CLI tool to simplify visual debugging of Python scripts on remote HPC clusters directly from your local VS Code instance.

remote-debug helps you bridge the gap between your local editor and a script running on a remote compute node, making it easy to debug GPU-specific issues or complex cluster jobs with a full-featured debugger.


Table of Contents


Installation

Install from PyPI:

pip install remote-debug

Or, build from source using Pixi:

# Install pixi with: curl -fsSL https://pixi.sh/install.sh | sh
pixi install

Quick Start

  1. Initialize your project Run this command from your project root to add the necessary VS Code launch configurations in .vscode/launch.json.

    rdg init
    

[!WARNING] If launch.json exists but is malformed, it will be backed up to launch.json.bak and a new file will be created.

  1. Run your script on the cluster Prefix your usual Python command with rdg debug. This will start a debug server and wait for you to connect.

    # Instead of: python my_script.py --arg value
    # Run this:
    rdg debug python my_script.py --arg value
    
  2. Check your job's output The job output will contain the connection details and the SSH command needed to attach the debugger.

    --- Python Debugger Info ---
    Node: uc2n805.localdomain
    Port: 51041
    Remote Path: /path/to/your/project
    --------------------------
    
    To connect from a local VS Code instance, run this on your local machine:
    ssh -N -L 5678:uc2n805.localdomain:51041 <user@login.hostname>
    Then, attach the debugger to localhost:5678.
    
    Script is paused, waiting for debugger to attach...
    
  3. Connect VS Code Follow one of the two methods below depending on your setup. Once attached, you can set breakpoints and debug as if you were running the code locally.


Debugging Workflow

[!NOTE] For the debugger to work, your VS Code editor must have access to the exact source code that is running on the remote compute node.

  • If you are developing locally: Make sure you have an identical copy of the project on your local machine (e.g., by using git clone).
  • If you are using VS Code Remote-SSH: You are already viewing the project files on the remote machine, so no extra steps are needed.

Method A: Connecting from your Local Machine

Use this method if you are running your IDE locally and want to connect to the remote cluster.

  1. Create an SSH Tunnel Copy and paste the ssh command directly from your job's output. If remote-debug was able to detect your username and the hostname of the cluster automatically you are good to go, otherwise just replace the <user@login.hostname> placeholder. Keep this terminal open.

  2. Attach Debugger (example with VS Code)

    • Open the "Run and Debug" panel in VS Code (Ctrl+Shift+D).
    • Select "Python Debugger: Remote Attach (via SSH Tunnel)" from the dropdown and click the play button.
    • You will be prompted for:
      • localTunnelPort: The local port for the tunnel (default is 5678).
      • remoteWorkspaceFolder: The Remote Path from the job output.

Method B: Connecting via VS Code Remote-SSH

Use this method if you are already connected to a remote machine (like a login node) using the VS Code Remote - SSH extension.

  1. Attach VS Code
    • Open the "Run and Debug" panel in VS Code (Ctrl+Shift+D).
    • Select "Python Debugger: Attach to Compute Node" from the dropdown and click the play button.
    • You will be prompted for:
      • computeNodeHost: The Node from the job output.
      • computeNodePort: The Port from the job output.

Lite Mode - On-Demand Debugging

For long-running jobs where you don't want to pause execution immediately but want the option to debug later, use lite mode:

  1. Start your job with lite mode

    rdg debug --lite python my_script.py --arg value
    

    The script runs normally without pausing. The output shows the Job ID and PID:

    [Lite Debugger] Armed and ready!
      Job ID:  12345
      PID:     67890
    
    To activate the debugger, run:
      rdg attach 12345
    
  2. Activate the debugger when needed

    When you want to start debugging, run from the login node:

    rdg attach
    

    This will:

    • Show an interactive menu to select your running job
    • Prompt you for the PID from the job output
    • Send a signal to activate the debugger

    Alternatively, provide the Job ID and PID directly:

    rdg attach 12345 67890
    
  3. Connect as usual

    Once activated, check the job output for connection details and follow the standard workflow above to attach VS Code.

[!TIP] Lite mode is perfect for jobs that run for hours or days. The debugger stays dormant until you need it, avoiding any performance impact. You can disconnect and reconnect multiple times during the job's lifetime.


Command Reference

Command Description
rdg debug python <script> [args...] Wraps a Python script to start a debugpy listener and waits for a client to attach.
rdg debug --lite python <script> [args...] Arms the debugger in lite mode - runs the script normally until you activate it with rdg attach.
rdg attach [job_id] [pid] Activates a lite-mode debugger. Prompts interactively if arguments are omitted.
rdg init Creates or updates .vscode/launch.json with the required debugger configurations.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remote_debug-0.3.5.tar.gz (36.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

remote_debug-0.3.5-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file remote_debug-0.3.5.tar.gz.

File metadata

  • Download URL: remote_debug-0.3.5.tar.gz
  • Upload date:
  • Size: 36.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for remote_debug-0.3.5.tar.gz
Algorithm Hash digest
SHA256 70c1224181deebc299fb4fb3bb15bfa82268d9deea0189e23fc4796cf5358ed9
MD5 5b4ae466801503fa30219b14a533bba8
BLAKE2b-256 d0d6da9a3b78bee131c83ccbd250628582f9852d86ce1486e5494a9c21978fc2

See more details on using hashes here.

File details

Details for the file remote_debug-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: remote_debug-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for remote_debug-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 365aa8d34e2eb3bb0b23366985e27b2b9e6ede6f2227f5e037271d6835173766
MD5 23cea7f4f22604c586aa341e7d9ce230
BLAKE2b-256 fa464d16c1c4cf89b167120d8616df3d1993ade5e2372435a228583abde5e0f7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page