All Projects → robusta-dev → debug-toolkit

robusta-dev / debug-toolkit

Licence: MIT license
A modern code-injection framework for Python. Like Pyrasite but Kubernetes-aware.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects
shell
77523 projects

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].