Skip to main content

Debug exceptions offline by saving them to a dump and raising them at a later point.

Project description

Traceback Serializer Project (offline-debug)

PyPI version Tests Coverage Ruff Ty checked

Overview

A Python package for high-fidelity serialization and deserialization of exceptions and their complete tracebacks. Unlike other solutions, offline-debug reconstructs actual types.FrameType objects using the Python C API, ensuring that re-raised exceptions look and feel genuine to debuggers and introspection tools.

Core Functions

  • save_traceback(exc: Exception, file_path: str): Serializes an exception, its traceback, and all picklable local/global variables to a binary file.
  • load_traceback(file_path: str) -> typing.Never: Loads the serialized state, reconstructs the exception and its full traceback chain (including __cause__ and __context__), and raises it.

Technical Implementation

  • True Frame Reconstruction: Uses ctypes to call PyFrame_New from the Python C API. This creates real frame objects which are required for a valid types.TracebackType.
  • Python 3.13 Compatibility: Leverages PEP 667 features where f_locals is a write-through proxy, allowing for accurate local variable restoration.
  • Robust Serialization:
    • pickle is used for exceptions and variables.
    • marshal is used for code objects.
    • Non-picklable items are gracefully handled by storing their repr.

Development & Tooling

  • Package Manager: uv
  • Minimum Python: 3.12
  • Testing: pytest
  • Commands:
    • Add dependencies: uv add <package>
    • Run tests: uv run pytest

Usage Example

from offline_debug import save_traceback, load_traceback

try:
    # Code that might fail
    some_complex_operation()
except Exception as e:
    save_traceback(e, "crash_report.dump")

# To debug or re-examine later:
load_traceback("crash_report.dump")

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

offline_debug-0.1.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

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

offline_debug-0.1.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file offline_debug-0.1.1.tar.gz.

File metadata

  • Download URL: offline_debug-0.1.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for offline_debug-0.1.1.tar.gz
Algorithm Hash digest
SHA256 286a3e34f1113b340f3cabc7c38ee5d16829608a6d855440bcfaba3a2b46a540
MD5 29b4ae187667c5e5b464abee5d757252
BLAKE2b-256 21c47d50008c7c68ecb23882e155f945ffdf2ff41f80c255585b0be6f2102a0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for offline_debug-0.1.1.tar.gz:

Publisher: ci.yml on INTODAN/offline-debug

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file offline_debug-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: offline_debug-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for offline_debug-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0c42d7808cd9dabcacb8636ba44b561d4de9f8c7df95c8e62090ad68d0990795
MD5 7cc8bfe1ffe06629ede7512d6a944aba
BLAKE2b-256 0cb477adfcd20d0535d6e5ffe8b47552ba44cfcd677c458b8c50e4852e937e27

See more details on using hashes here.

Provenance

The following attestation bundles were made for offline_debug-0.1.1-py3-none-any.whl:

Publisher: ci.yml on INTODAN/offline-debug

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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