RAD Debugger:面向超大工程的原生图形调试与快速链接工具
一个给C/C++超大工程用的原生图形调试器和快速链接器,靠RDI减少PDB转换并加速链接。
GitHub EpicGames/raddebugger 更新 2026-10-08 分支 master 星标 7.9K 分叉 382
C/C++ 图形调试器 RAD Linker RDI Windows x64 Linux x64

🧭 决策指南

适合,如果你

  • 你在Windows x64上调试本机多进程C/C++程序,并使用PDB。
    README的“The RAD Debugger Project”写明当前仅支持local-machine Windows x64 debugging with PDBs。
  • 你的x64工程调试信息达到多个GB,链接时间是compile-debug cycle瓶颈。
    README的“The RAD Linker”称其面向huge linking projects,并报告多GB调试信息案例链接快50%。
  • 你需要把PDB转换为RDI,或用radbin查看RDI内容。
    README的“The RAD Debug Info (RDI) Format”说明radbin可转换原生调试信息并生成RDI文本转储。

不适合,如果你

  • 你需要Linux原生调试或DWARF调试信息支持。
    README说明Linux debugging和DWARF support仍计划在未来扩展。
  • 你的构建流程依赖link-time-optimizations。
    README的“The RAD Linker”明确写着当前尚不支持link-time-optimizations。
  • 你需要非本机调试、远程调试或其他架构支持。
    README的“The RAD Debugger Project”和“Project Roadmap”分别说明当前是local-machine Windows x64,remote debugging与其他架构属于后续方向。
  • 你要求成熟稳定、已有完整使用手册的调试器。
    README将调试器标为ALPHA,并明确主README不包含使用说明和技巧。

前置条件

  • Windows构建需要Microsoft C/C++ Build Tools v15(2017)或更高版本及Windows SDK;可使用MSVC或Clang。
  • Windows命令行构建需要可调用MSVC或Clang,README示例使用x64 Native Tools Command Prompt。
  • Linux x64构建需要GCC或Clang,以及libfreetype、libx11、libxext、libxfixes、libxrandr、libgl、libegl开发包。
  • 调试器当前运行条件是local-machine Windows x64 debugging with PDBs。
  • RAD Linker默认按CPU核心数创建线程;并行运行多个链接器时可使用/rad_workers限制线程。

第一步命令(README 原文)

build

要注意

  • 直接运行build得到debug mode,未启用优化,性能可能更差。
    README的“3. Building”说明默认build生成debug mode executable,且may perform worse。
  • build release会显著增加构建时间。
    README的“3. Building”明确说明release mode build will take significantly longer。
  • 标准Windows环境不要随意启用/rad_large_pages,否则可能快速内存碎片化并被迫重启。
    README的“The RAD Linker”建议仅在每次链接后重置的Docker或VM中使用large pages。
  • Linux依赖名称按发行版不同,Ubuntu命令与Arch命令并不相同。
    README的“Installing Dependencies”分别给出apt install与pacman -S --needed命令。

替代方案

  • MSVC Linker:项目依赖link-time-optimizations,而RAD Linker尚未支持该能力时更合适。
    The RAD Linker

材料未说明

  • 主README没有说明调试器本身的具体使用流程、快捷键和调试技巧。
  • 提供材料没有列出RAD Debugger支持的完整Windows编译器、PDB版本或语言特性范围。
  • 提供材料没有说明Linux x64构建后是否已经具备Linux原生调试功能。
  • 提供材料没有给出RAD Debugger与RAD Linker的测试覆盖率、崩溃率或稳定性数据。
  • README提到benchmark但提供材料未包含完整基准表,无法判断不同工程规模下的实际性能。
  • 提供材料没有说明预构建release binaries的具体平台、打包内容和版本兼容性。

💡 深度解析

6
不适合 我在 Linux x64 上开发原生程序,调试信息是 DWARF;我能否现在直接使用 RAD Debugger 调试这些程序,而不是等待后续 Linux/DWARF 支持?
适合读者: 在 Linux x64 上研究调试器、希望调试原生 Linux 程序和 DWARF 的底层开发者

不适合:Linux x64 目前是源码开发平台,不是 README 宣布的调试器正式支持目标,且 DWARF 支持仍在未来计划中。

  • README 明确限定当前调试器为“local-machine Windows x64 debugging with PDBs”,因此 Linux 原生调试和 DWARF 不在当前支持范围。
  • README 将“native Linux debugging and DWARF debug info”描述为未来扩展方向,而不是现有能力。
  • 项目确实提供 Linux x64 开发构建路径,依赖 GCC 或 Clang,以及 FreeType、X11、X11 扩展、GL、EGL 等库;这只能证明可以在 Linux 上构建开发代码,不能证明能调试 Linux/DWARF 目标。

因此,Linux x64 用户可以参与构建和研究,但不能把当前版本视为可直接替代 Linux/DWARF 调试器的工具。

  • README:It currently only supports local-machine Windows x64 debugging with PDBs.
  • README:In the future we'll expand to also support native Linux debugging and DWARF debug info.
  • README:The project is actively developed both on Windows x64 and Linux x64 development machines.
  • README:Linux 构建依赖 GCC 或 Clang、FreeType、X11、GL、EGL 等。
sudo apt update && sudo apt install build-essential
材料未说明:README 未说明 Linux 调试支持的预计发布时间或当前分支中的可用实验功能。;README 未说明 Linux 构建产物当前能运行哪些功能,以及是否已有部分 DWARF 转换路径。
适合 我的 x64 PE/COFF 工程会生成数 GB 调试信息,标准 PDB 偶尔因内部 32 位表溢出而损坏;我是否应该尝试 RAD Linker 和原生 RDI?
适合读者: 负责数十亿字节 PDB 和超大型 x64 PE/COFF 可执行文件的 Windows 构建工具链工程师

适合:这正是 README 明确针对的超大型链接场景,但需要确认现有工程不依赖 LTO。

  • RAD Linker 面向“generating x64 PE/COFF binaries”,并可原生生成 RDI,目标之一就是处理“huge executables that otherwise create broken PDBs that overflow internal 32-bit tables”。
  • README 的测试案例中,调试信息达到多个 GB 时,链接时间约快 50%;这是项目方测试结果,不代表所有工程都能复现。
  • 命令行语法与 MSVC 完全兼容,并可继续生成标准 PDB,因此迁移路径不局限于立即切换到 RDI。
  • README 明确写出当前“不支持 link-time-optimizations”,采用 LTO 的工程不能假设无缝迁移。

若工程是 x64 PE/COFF、调试信息确实超大且不依赖 LTO,RAD Linker/RDI 的适配价值很高;若 LTO 是硬约束,则当前不适合作为直接替代。

  • README:The RAD Linker is a new performance linker for generating x64 PE/COFF binaries.
  • README:huge executables that otherwise create broken PDBs that overflow internal 32-bit tables.
  • README:where debug info is multiple gigabytes, we see 50% faster link times.
  • README:We don't yet have support for link-time-optimizations.
材料未说明:README 未说明 RAD Linker 对该工程的增量链接、第三方库、签名和发布流程的兼容性。;README 未给出 PDB 转 RDI 后所有模板、内联函数和异常信息场景的完整性数据。
视情况 我准备在 Docker 或虚拟机里为大型 x64 PE/COFF 链接启用 `/rad_large_pages`,README 所说的额外 25% 链接时间下降是否足以支持这项选择?
适合读者: 想在 Docker 或虚拟机中测试大内存页链接优化的 Windows x64 工具链工程师

视情况:README 给出明确的性能收益和推荐隔离环境,但也明确提示 Windows 大页支持存在稳定性问题。

  • README 称启用大内存页可让链接时间“reduce link time by another 25%”,但该数字属于项目方测试,未说明你的工程规模、内存配置或并发条件。
  • 参数必须显式启用:/rad_large_pages,默认关闭。
  • 项目推荐仅在 Docker 或 VM 等每次链接后可重置的环境中使用,因为标准 Windows 环境可能快速产生内存碎片并迫使重启。
  • 该选项针对 RAD Linker 的大型链接流程,不等于调试器或 RDI 本身获得同样收益。

所以,在可重置的隔离环境中它值得测试;若目标是长期运行的标准 Windows 工作站,README 的风险描述不足以支持默认启用。

  • README:large pages ... reduce link time by another 25%.
  • README:you need to explicitly request them via `/rad_large_pages`.
  • README:we recommend they only be used in Docker or VM images where the environment is reset after each link.
  • README:using large pages otherwise will fragment memory quickly, forcing a reboot.
材料未说明:README 未说明 Docker 或 VM 中启用大页所需的具体 Windows 权限、宿主机配置和容器运行参数。;README 未提供大页在不同工程上的失败率、碎片化速度和重启频率。
适合 我会在同一台 Windows 机器上并行运行多个大型 x64 链接任务,而 RAD Linker 默认按 CPU 核心数创建线程;我应该如何判断它是否会造成资源争用?
适合读者: 在 Windows 上并行运行多个大型链接任务、机器核心数和内存都有限的构建基础设施工程师

适合:README 已提供针对并行链接的线程控制开关,但没有替你确定具体并发配置。

  • RAD Linker 默认创建与 CPU 核心数相同的工作线程;多个链接器同时运行时,默认行为可能让每个任务都争用全部 CPU 和内存。
  • README 明确提供 /rad_workers,用于限制单个链接器的 worker 数量,这与并行构建场景直接相关。
  • 工具面向“gigantic executables”,因此单个链接任务本身就可能具有较高内存压力;README 没有给出不同 worker 数对应的峰值内存曲线。
  • /rad_large_pages 不是常规并行化手段,README 说明其在标准 Windows 环境可能快速造成内存碎片并迫使重启。

因此它适合纳入并行构建系统,但必须把每个链接器的 /rad_workers 作为资源调度参数;大内存页不能默认开启。

  • README:By default, the linker spawns as many threads as there are cores.
  • README:you can limit the number of thread workers via `/rad_workers`.
  • README:designed to be very fast when creating gigantic executables.
  • README:using large pages otherwise will fragment memory quickly, forcing a reboot.
材料未说明:README 未提供单个链接任务的峰值内存、worker 数与链接时间之间的实测关系。;README 未说明构建系统是否能按机器剩余内存动态生成 `/rad_workers` 参数。
视情况 我需要在 Windows x64 C/C++ 工具链中把 PDB 转为 RDI、查看 RDI 的文本内容,并可能自行生成或序列化 RDI;RAD Debugger 项目是否适合做这个基础?
适合读者: 希望把 PDB 转换为 RDI、检查调试信息内容并研究 C/C++ 调试信息格式的工具链开发者

视情况:项目已经提供转换和解析组件,但 RDI 的构造、序列化与格式接口仍在演进,不适合把它当作完全稳定的公开标准。

  • radbin 可以把原生调试信息转换为 RDI,并能输出 RDI 内容的文本化转储;调试器也可通过 --bin 入口访问该工具。
  • src/lib_rdi 中的 rdi.h、rdi.c 定义格式类型和函数,rdi_parse.* 提供解析辅助,适合研究格式实现。
  • README 明确说明 src/lib_rdi_make 仍是“in-progress library for constructing and serializing RDI data”,因此自行生成 RDI 的接口可能变化。
  • RDI 被设计为调试器原生消费格式,而非 README 宣布的稳定跨工具交换标准。

它适合作为研究、原型和项目内工具链基础;若需要长期稳定的外部格式契约,则应先确认版本锁定和兼容策略。

  • README:radbin ... is capable of converting native debug information formats to RDI.
  • README:producing textual dumps of contents stored within RDI files.
  • README:The RDI format is currently specified in code, in the files within the `src/lib_rdi` folder.
  • README:We also have an in-progress library for constructing and serializing RDI data.
cl
材料未说明:README 未说明 RDI 格式版本兼容规则、文件稳定性承诺和跨版本迁移工具。;README 未说明 `radbin` 对复杂模板、内联函数、宏和异常调试信息的转换覆盖率。
视情况 我维护一个大型 Windows x64 C/C++ 游戏客户端,现有构建产物使用 PDB,并且经常需要同时调试多个进程;RAD Debugger 能否作为日常调试器?
适合读者: 维护大型 Windows x64 C/C++ 游戏客户端、使用 PDB、需要图形化多进程调试的工程师

视情况:平台、调试信息和调试模型都匹配,但项目仍处于 Alpha,不能仅凭功能描述替代成熟调试器。

  • README 明确支持“local-machine Windows x64 debugging with PDBs”,并定义为“native, user-mode, multi-process, graphical debugger”,与该客户端的目标环境一致。
  • 项目当前版本为 v0.9.29-alpha,README 要求用户提交崩溃转储、构建版本、复现步骤和测试可执行文件,说明稳定性仍在验证中。
  • README 的主文档不包含调试器使用说明,具体操作指南位于 release 包或本地构建后的 build 目录。

因此,它适合在 Windows x64/PDB 场景中试用和补充现有工具,但不适合在 Alpha 阶段直接成为唯一的日常调试路径。

  • README:The RAD Debugger is a native, user-mode, multi-process, graphical debugger.
  • README:It currently only supports local-machine Windows x64 debugging with PDBs.
  • README:The debugger is currently in ALPHA.
  • 项目数据:latest_release 为 v0.9.29-alpha
材料未说明:README 未说明目标客户端的异常处理、断点、线程控制和多进程附加功能是否覆盖现有工具的全部需求。;README 未提供该客户端规模下的启动时间、符号加载时间和稳定性数据。

✨ 核心亮点

  • RAD Linker 在多GB调试信息案例中快50%
  • RDI统一转换、解析PDB等调试信息
  • 原生Windows x64支持多进程图形调试
  • MIT许可,代码主体为C并含C++

🔧 工程化

  • RAD Debugger提供本机Windows x64、PDB多进程图形调试。
  • radbin通过--bin转换原生调试信息并输出RDI文本内容。
  • RAD Linker生成x64 PE/COFF,并可原生生成RAD Debug Info。

⚠️ 风险

  • README明确标注调试器处于ALPHA阶段,稳定性仍需反馈。
  • 调试器当前仅支持本机Windows x64与PDB,Linux和DWARF仍是计划。
  • Windows标准环境启用/rad_large_pages会快速碎片化内存并可能要求重启。
  • RAD Linker尚不支持link-time-optimizations,功能仍在路线图中。

👥 适合谁?

  • 维护调试信息达数GB的x64超大工程团队。
  • 需要Windows x64本机PDB多进程图形调试的C/C++开发者。
  • 希望用RDI或radbin扩展调试信息工具链的贡献者。