{"categories":[{"label":"Utilities","url":"https://skillfed.io/packages/category/utilities/4"},{"label":"Monitoring","url":"https://skillfed.io/packages/category/system-monitoring/2"},{"label":"Networking","url":"https://skillfed.io/packages/category/system-networking"},{"label":"Debuggers","url":"https://skillfed.io/packages/category/software-development-debuggers"}],"enrichment":{"capability":"Manhole installs an in-process debugging service that listens on a Unix domain socket, allowing you to connect and inspect thread stacktraces or drop into an interactive Python shell within a running process.","skillfed_tags":["debugging","unix-socket","production-tools"],"use_cases":["Attach a live REPL to a running production service to inspect state or execute commands without stopping it.","Dump stacktraces from all threads in a hung or slow process to diagnose deadlocks or performance issues.","Trigger debugging on demand by sending a signal (e.g., SIGUSR1) to activate the manhole listener.","Debug forking applications (e.g., uWSGI workers) where the manhole reinstalls itself after fork.","Inspect and modify application state in gevent or eventlet async frameworks with oneshot or non-threaded modes."],"what_it_does":"Manhole is a debugging tool that runs inside your Python process and listens on a Unix domain socket. When you connect to that socket, it verifies your credentials (same user or root), redirects your standard streams, dumps stacktraces for all threads, and drops you into an interactive Python REPL where you can inspect and modify the running process. It's designed for production debugging\u2014you can activate it on demand via a signal, run it in a background thread, or trigger it from a signal handler, and it handles forking, gevent, and eventlet with appropriate configuration.\n\nThe package has no runtime dependencies and installs as a pure Python wheel. It supports Python 3.8 through 3.12 on CPython and PyPy. Maintenance is dormant but the codebase is stable; the last release fixed a Python 3.11 buffering issue and cleaned up Python 2 remnants.","worth_installing":"Yes, if you need in-process debugging on Unix/Linux production systems. The package is stable, has no dependencies, and solves a real problem\u2014live inspection without stopping the process. The dormant maintenance is acceptable for a mature tool with a narrow, well-defined scope. Not suitable for Windows or when you cannot use Unix domain sockets."},"id":"manhole","links":{"html":"https://skillfed.io/packages/manhole","md":"https://skillfed.io/packages/manhole.md","pypi":"https://pypi.org/project/manhole/"},"maintenance":{"status":"dormant"},"meta":{"latest_release":"2024-07-04","license_spdx":null,"license_treatment":"permissive","name":"manhole","python_support":"supports_current","summary":"Manhole is in-process service that will accept unix domain socket connections and present thestacktraces for all threads and an interactive prompt."},"popularity":{"monthly_downloads":1116619,"position":4350,"tier":"top_5000"},"security":{"n_vulnerabilities":0},"version":"1.8.1"}
