RAD Debugger Vibe 项目

Epic Games 开源的多进程图形调试器与高速链接器

项目简介

RAD Debugger 是由 Epic Games 开源的原生用户态多进程图形调试器,面向大型 C/C++ 项目的调试与排查场景。项目定位与传统 Visual Studio 调试器不同——它把"调试器 + 自定义调试信息格式 + 高性能链接器"打包成同一工具链,目标是为 Unreal Engine 等体量巨大的 C++ 项目提供更快的"编译-调试"循环。仓库 README 明确说明项目仍在 ALPHA 阶段,当前仅支持 Windows x64 上的本地 PDB 调试,Linux 与 DWARF 支持已在路线图中。GitHub 上以预编译二进制形式发布 Release,使用者无需自行构建即可上手。

核心功能

  1. 多进程图形调试:原生的用户态图形化调试器,可在单一界面内附加并跟踪多个目标进程,适合调试引擎主进程 + 后台 worker / job system 等多进程架构。
  2. PDB 转 RDI 按需转换:内置 RAD Debug Info(RDI)格式——把现有 PDB(未来还将支持 DWARF)在调试时按需转换为 RDI,既兼容主流工具链,也规避了部分大型 PDB 文件中 32 位表溢出的问题。
  3. RAD 高速链接器:自带的 x64 PE/COFF 链接器在多 GB 级别调试信息的项目上比传统链接器提速约 50%;命令行与 MSVC 完全兼容,可通过 /rad_workers 限制并发线程、/rad_large_pages 启用大页。
  4. C/C++ 友好的工作流:通过 --bin 命令行参数运行 radbin 工具,可以将原生调试信息转换为 RDI,或生成 RDI 文件内容的文本转储,便于脚本化和二次开发。
  5. 模块化构建系统:源码基于 Epic 自研的 metadesk 元数据描述语言生成 UI 层,编译流程在 Windows 上通过 MSVC build.bat 或 Clang 完成,便于开发者裁剪或扩展模块。

技术实现

RDI 是 RAD Debugger 的"心脏"——一种自定义的调试信息格式,定义在 src/lib_rdi 目录下的 rdi.h / rdi.c / rdi_parse.h / rdi_parse.c 中,负责规定类型与函数以及解析助手;src/lib_rdi_make 目录则用于 RDI 数据的构造与序列化,目前仍在持续完善。调试器运行时并不直接消费 PDB,而是把 PDB(或未来的 PE/ELF+DWARF)按需转换为 RDI 后再解析,这种"中间格式 + 转换层"的设计既解耦了工具链,又能让 RAD Linker 在产出阶段直接生成 RDI,跳过调试时的转换开销。RAD Linker 本身针对巨大可执行文件的链接做了多线程与内存优化,默认线程数等于 CPU 核心数;启用大页内存在 Docker / 虚拟机等可重置环境下能再降约 25% 链接时间,但 Windows 原生环境因大页机制容易碎片化,作者建议谨慎启用。整套工具链使用 metadesk 描述 UI 元数据,由 build 脚本统一编译为原生可执行文件 raddbg.exe,发布包内置完整 README 与使用说明。

快速上手

  1. 从 GitHub Releases 下载预编译的 raddbg.exe(Windows x64),无需自行构建即可启动调试器。
  2. 在本地构建:从 Microsoft 官方安装 C/C++ Build Tools v15(2017)或更高版本,确保 SDK 与 MSVC 链接器可用;可选安装 Clang 作为替代编译器。
  3. 打开"x64 Native Tools Command Prompt for VS",cd 到仓库根目录后执行 build 进入调试模式构建,再执行 build release 生成优化后的发布版。
  4. 构建完成后根目录的 build/ 文件夹下会出现 raddbg.exe,双击运行即可加载带 PDB 的本地二进制进行调试;需要附加多进程时直接在新会话中指定第二个进程 PID。
  5. 想把现有 PE/COFF 调试信息转成 RDI,可在命令行执行 raddbg --bin;切换链接器为大页模式则在 MSVC 命令行附加 /rad_large_pages。

适用人群

  • Unreal Engine / 自研大型 C++ 引擎的底层开发者,需要为多 GB 级调试信息寻找更快的链接-调试循环。
  • 平台工程师与工具链研究者,对自定义调试信息格式(RDI)、链接器内部实现感兴趣,希望深入分析 Epic 工具链。
  • 安全 / 反汇编研究员,需要一个轻量、原生、可脚本化的 Windows x64 调试前端来处理 PDB 样本。
  • 任何对调试器内部原理好奇、愿意在 ALPHA 项目上提交 Issue 与复现样本的 C/C++ 高级用户。

团队信息

由 AI 猎手自动发现

评论与建议

0 条评论