Pwndbg插件发布流程:打包、测试与分发指南
概述
Pwndbg作为一款面向漏洞开发与逆向工程的GDB插件,其发布流程涵盖版本控制、测试验证、文档构建和多渠道分发等关键环节。本文档基于项目自动化脚本与配置文件,详细说明从代码提交到用户安装的完整流程,适用于开发人员与打包维护者。
版本管理与打包配置
版本号更新机制
发布前需通过scripts/release.sh脚本完成版本号替换,该脚本支持跨平台sed语法,自动更新以下文件中的版本标识:
- 核心配置:pyproject.toml(项目元数据)
- 版本常量:pwndbg/lib/version.py
- 文档说明:README.md、docs/setup.md
执行示例:
./scripts/release.sh 2025.10.10 2025.10.20
打包配置详解
项目采用Hatchling作为构建后端,在pyproject.toml中定义以下关键配置:
- 打包范围:仅包含
pwndbg与pwndbginit目录 - 入口脚本:
pwndbg与pwndbg-lldb命令映射至pwndbginit模块 - 依赖分组:区分
gdb/lldb核心依赖与dev/lint开发依赖
测试验证流程
自动化测试体系
发布前需通过多层测试确保稳定性,核心测试脚本为tests.sh,包含:
- 集成测试:通过
python3 -m tests.tests执行tests/目录下的二进制测试用例 - 环境检查:自动检测glibc版本,适配不同Linux发行版
测试用例覆盖场景:
- 堆管理:tests/binaries/host/heap_bins.c
- 多线程:tests/binaries/host/multiple_threads.c
- 架构兼容性:tests/binaries/qemu_user/目录下的跨架构测试
文档验证机制
文档构建与验证通过以下脚本完成:
- 文档提取:scripts/_docs/extract-all-docs.sh从代码中提取命令说明
- 构建验证:scripts/verify-docs.sh检查文档完整性与链接有效性
分发渠道与部署
官方分发渠道
- 源码安装:用户通过setup.sh脚本自动部署,支持GDB/LLDB双调试器
- 包管理器:
- RPM/DEB包:发布于GitHub Releases,包含预编译依赖
- Homebrew:macOS用户通过
brew install pwndbg/tap/pwndbg-gdb安装
- 便携版本:提供包含Python虚拟环境的tar包,解压即可运行
第三方打包指南
自2025.10.10版本起,打包流程简化,无需手动创建.skip-venv文件。详细指南见docs/tutorials/packaging.md,关键变更包括:
- 自动检测虚拟环境
- 标准化Python入口点
- Gentoo等发行版已采用新打包流程(参考Gentoo PR #44181)
发布自动化与监控
CI/CD流水线
项目通过GitHub Actions实现自动化发布,关键环节:
- 版本标签触发:创建
vX.Y.Z标签后自动启动构建 - 多平台打包:生成Linux/macOS的便携版与系统包
- 文档同步:自动更新docs/目录并部署至GitHub Pages
发布检查清单
发布前需完成以下验证:
- 版本号已更新至
pyproject.toml -
uv lock已更新依赖锁文件uv.lock - 所有测试通过
tests.sh验证 - 文档构建无警告(
scripts/generate-docs.sh)
常见问题处理
打包错误排查
- 依赖冲突:通过
uv --show-traceback检查依赖解析日志 - 架构兼容性:使用QEMU测试tests/binaries/qemu_user/中的跨架构用例
- 文档警告:运行scripts/verify-docs.sh定位缺失的命令说明
分发渠道维护
- 包管理器版本同步:监控各发行版包状态,如Arch AUR的pwndbg
- 便携版兼容性:定期测试docs/assets/videos/中的功能演示视频是否正常运行
附录:发布流程图
关键文件索引
- 发布脚本:scripts/release.sh
- 测试配置:pyproject.toml的
[tool.pytest.ini_options]段 - 打包指南:docs/tutorials/packaging.md
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



