pyxdia
Extract useful program information from PDB files
What it is and what it does
pyxdia is a Python wrapper around xdia, a native tool for reading Windows PDB (Program Database) files. It provides cross-platform access to debug symbol information—function names, global variables, addresses, and metadata—that is normally locked into Windows-only tooling. The library bundles xdia as a native executable and uses a compatibility layer (xdialdr) plus the Blink emulator to run it on macOS and Linux, making PDB analysis accessible from Python on any major platform.
The package is designed for developers and reverse engineers who need to programmatically extract symbol tables and program structure from compiled binaries. It has no Python runtime dependencies, only the bundled native components. Installation is straightforward via pip, though the wheels are larger due to the included binaries. The project is actively maintained but young (first released in mid-2024), so production use should account for potential API changes.
Use it for:
- Extract function and variable names from compiled Windows binaries for reverse engineering or security analysis
- Analyze debug symbols in PDB files to map addresses to source-level identifiers
- Automate symbol extraction in CI/CD pipelines for binary instrumentation or profiling workflows
- Build tools that depend on PDB metadata without requiring Windows-only debugging infrastructure
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pyxdia extracts program metadata and symbol information from PDB (Program Database) files, enabling analysis of compiled binaries across Windows, macOS, and Linux.
Yes, if you need to parse PDB files from Python on non-Windows platforms or want a programmatic interface to symbol extraction. The bundled binaries and active maintenance make installation straightforward, but verify that the included binary licenses (xdia, Blink) align with your use case. The 0.1.1 version and small user base suggest treating it as a specialized tool rather than a production-critical dependency without additional vetting.
Install
pyxdia on PyPI
pip
pip install pyxdiauv
uv add pyxdiapoetry
poetry add pyxdiaInstalling pyxdia
Before you install
Medium install friction due to bundled native binaries (xdia executable and Blink emulator) included in wheels; active maintenance with recent commits, though the project is young with limited adoption signals.
License in practice
pyxdia source is MIT-licensed, but wheels bundle additional binaries under separate licenses documented in *.LICENSE.txt files within the package; review those bundled licenses before use in proprietary or restricted environments.
Quickstart
from pyxdia import PDB
pdb = PDB("./program.pdb")
globals_list = pdb.globals
for global_sym in globals_list:
print(global_sym['name'], global_sym['addressOffset'])
Requires Python 3.12 or later; wheels include prebuilt binaries for macOS (Intel/ARM), Linux (x86_64/aarch64), and Windows (x86_64).
Verify before relying
- Whether the bundled xdia binary and Blink emulator licenses are compatible with your intended use case
- Performance characteristics when parsing large or complex PDB files
- Stability guarantees given the 0.1.1 version number and early release date
Package facts
| License | Copyright 2024 Matt Borgerson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the… (full text in the JSON record) (unclear) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 59 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 279,138/month — #8,125 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyxdia-0.1.1-py3-none-macosx_13_0_x86_64.whl; pyxdia-0.1.1-py3-none-macosx_14_0_arm64.whl; pyxdia-0.1.1-py3-none-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl; pyxdia-0.1.1-py3-none-manylinux_2_28_aarch64.whl; pyxdia-0.1.1-py3-none-win_amd64.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
ipsw-parserParses and extracts data from iOS IPSW firmware…
copyleft · top 15,000 on PyPI
pdbppdbp is an enhanced Python debugger that…
permissive · top 5,000 on PyPI
ipdbipdb is an IPython-enabled debugger that…
permissive · top 5,000 on PyPI
pdbpppdbpp is a drop-in replacement for Python's…
permissive · top 5,000 on PyPI
web-pdbWeb-PDB provides a web browser interface for…
permissive · top 15,000 on PyPI
flake8-debuggerA flake8 plugin that detects debugger…
permissive · top 15,000 on PyPI
pyobjc-framework-SymbolsProvides Python bindings for macOS's Symbols…
permissive · top 15,000 on PyPI
pyvips-binaryProvides pre-built binary wheels of libvips and…
copyleft · top 15,000 on PyPI
pdbrpdbr enhances Python's built-in debugger with…
unclear · top 5,000 on PyPI
pdb-attachAttaches a Python debugger (pdb) to…
permissive · top 15,000 on PyPI