Skip to content

A modern code-injection framework for Python. Like Pyrasite but Kubernetes-aware.

License

Notifications You must be signed in to change notification settings

robusta-dev/debug-toolkit

Repository files navigation

TL;DR

A modern code-injection framework for Python + useful utilities.

This is like Pyrasite but without the bugs and Kubernetes-aware.

This powers many Robusta features. You should probably use Robusta instead of using this directly.

Overview

This repo contains source code for the docker container that powers the following Robusta features:

  1. Inject code into Python apps
  2. Attach a VSCode debugger to any Python application running on Kubernetes - this works by injecting debugpy
  3. Profile cpu and memory usage of Python apps - this works by wrapping PySpy (for CPU) and by injecting the tracemalloc library into the target process (for memory)
  4. List processes in any pod (not just Python)

Essentially, it is two things:

  1. A Pyrasite replacement that fixes deadlocks and other issues.
  2. A Docker container containing that Pyrasite replacement, which is used by Robusta to troubleshoot and debug containers

Adding new python injection payloads

  1. Add a new payload in src/debug_toolkit/payloads
    1. Make sure ALL of your code is inside the entrypoint function, even imports. Errors are not handled or reported for code outside of the entrypoint.
  2. Add a wrapper command in src/debug_toolkit/main.py

Releasing a new version

  1. Bump the version in pyproject.toml
  2. Run the following, replacing "v4" with the tag of the new release.
skaffold build --tag v4

That is all. We're not pushing versions to pypi right now.

About

A modern code-injection framework for Python. Like Pyrasite but Kubernetes-aware.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •