
windbg preview 因缺少 python 运行时依赖(如 python38.dll)而无法直接加载 pykd.pyd,推荐使用官方推荐的 bootstrapper 方式:以 pykd.dll 作为调试器扩展,并通过 pip 安装 pykd wheel 包,由其自动定位并加载对应版本的 pykd.pyd。
windbg preview 因缺少 python 运行时依赖(如 python38.dll)而无法直接加载 pykd.pyd,推荐使用官方推荐的 bootstrapper 方式:以 pykd.dll 作为调试器扩展,并通过 pip 安装 pykd wheel 包,由其自动定位并加载对应版本的 pykd.pyd。
在 WinDbg Preview 中直接执行 .load pykd.pyd 失败(报 Win32 错误 0n126:“指定模块未找到”),根本原因并非 pykd.pyd 文件缺失,而是该 DLL 依赖特定版本的 Python 原生运行时(例如 python38.dll 或 python39.dll),而 WinDbg Preview 的进程环境默认不包含 Python 的 DLL 搜索路径,也无法自动解析其依赖链(如 ucrtbase.dll、vcruntime140.dll 等)。相比之下,传统 WinDbg(x64)常与系统级 Python 环境共存,路径继承更宽松,故能偶然成功。
✅ 正确做法:使用 PyKD 官方推荐的 bootstrapper 模式
PyKD 提供了轻量级 pykd.dll(非 Python 编译产物,而是 C++ 实现的调试器扩展入口),它不依赖 Python DLL,仅负责动态发现并加载已安装的 pykd.pyd。操作步骤如下:
-
安装 PyKD wheel(推荐 pip)
# 确保使用与目标调试场景匹配的 Python 版本(如 x64 Python 3.8+) pip install pykd
安装后,
pykd.pyd将置于 Python site-packages 目录(如Lib\site-packages\pykd\pykd.pyd),并自动适配当前 Python 版本。 -
在 WinDbg Preview 中加载 bootstrapper
0: kd> .load pykd.dll
⚠️ 注意:
pykd.dll需从 PyKD GitHub Releases 下载对应架构(x64/x86)和 WinDbg 版本兼容的二进制(如pykd_x64.dll),重命名为pykd.dll并置于 Windbg 可搜索路径(如C:\Program Files\Windows Kits\10\Debuggers\x64\winext\或当前工作目录)。 -
验证加载与初始化
0: kd> !pykd.version PyKD version: 2.1.1 (Python 3.8.10)
成功输出即表示 bootstrapper 已定位到
pykd.pyd并完成 Python 环境绑定。
? 关键注意事项:
- ❌ 不要手动
.load pykd.pyd—— 它是 Python 扩展模块,非调试器原生扩展; - ✅
pykd.dll是唯一应.load的入口,其余由其内部import pykd自动完成; - 确保 WinDbg Preview 和 Python 均为 相同位数(x64/x86),且 Python 版本 ≥ 3.7;
- 若仍报错,请用 Dependency Walker 或
dumpbin /dependents pykd.pyd检查缺失的 DLL,并将对应 PythonDLLs/目录临时加入系统PATH(仅用于诊断,非长期方案)。
此方法解耦了调试器与 Python 运行时的强绑定,符合 WinDbg Preview 的现代扩展模型,也是 PyKD 官方文档明确支持的标准流程。

















