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: BaseException, file: Path | BytesIO): Serializes an exception, its traceback, and all picklable local/global variables to a binary file or buffer.
  • load_traceback(file: Path | BytesIO) -> Never: Loads the serialized state, reconstructs the exception and its full traceback chain (including __cause__ and __context__), and raises it.

Usage Example

to get started, install with:
pip install offline-debug or uv add offline-debug

from pathlib import Path
from offline_debug import save_traceback, load_traceback

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

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

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.
  • Support python 3.12 as well
  • 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

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.2.1.tar.gz (7.6 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.2.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: offline_debug-0.2.1.tar.gz
  • Upload date:
  • Size: 7.6 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.2.1.tar.gz
Algorithm Hash digest
SHA256 4ca76c92de3ecba82343d2fa2ae2cb2ebb2960c6fd468e13312932c560022f8d
MD5 e9875dab3e81d98f23402dd1ff0bbdc3
BLAKE2b-256 506d435773e7dd383bfaa92523d471c3bef570f0ba5d7ea6cf4d41c342825f4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for offline_debug-0.2.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.2.1-py3-none-any.whl.

File metadata

  • Download URL: offline_debug-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.6 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.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5d46b5eaafa2b8ed29b005fe632ee556b7f5d174e8873d4ed81ecb4010e4527
MD5 5dff6208677e2d712349424c19a7d65c
BLAKE2b-256 e2da4c9fca66310044c6dcdbff8d4df4ffcd26e20fc9b5bc181a3be8613e29b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for offline_debug-0.2.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