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.0.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.2.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: offline_debug-0.2.0.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.2.0.tar.gz
Algorithm Hash digest
SHA256 fb4ecf4c75b966a59a655d1cc2a1cc892c87317c9c63642e1d2d033351035292
MD5 8640cc5e445dbebeb022b92ee458e16b
BLAKE2b-256 3444c6900ed83149d4bff9851469782ec488f28f70957d0b09a1555d1fb8ace0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: offline_debug-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 346be779cdc3483d812bbd8d8e874cc9dbc44d691cb992d6128d3463928cec76
MD5 1b4f23c95dd14f40562b06985b2303d3
BLAKE2b-256 6dbf80f4db7acf3036d2031a30979eddfaf60f46bf4c977e250bbaa0095c7536

See more details on using hashes here.

Provenance

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