📌 项目地址:EpicGames/raddebugger | ⭐ 7,783 颗星 | 🔧 C | 📜 未标注
项目是什么
RAD Debugger 是 Epic Games 开源的图形化原生调试器,用 C 写的,7783 个 star。它跑在用户态,支持多进程调试,目前只支持本机 Windows x64 加 PDB 符号。Linux 和 DWARF 支持在计划里,还没做。
项目还在 ALPHA 阶段。团队在 README 里直接说了:想让它变稳定,请去提 issue,最好附上 dump 文件、你用的构建版本、复现步骤和测试用的可执行文件。
有意思的地方:它不顺从 PDB
一般调试器的路径是:工具链产出 PDB,调试器解析 PDB。RAD Debugger 不是这样。
它自己定义了一套调试信息格式,叫 RAD Debug Info(RDI)。调试器只解析 RDI,PDB 在调试时按需转换成 RDI。未来 PE/ELF 里内嵌的 DWARF 也走这条路。
格式规格不写文档,直接写在代码里:
src/lib_rdi/rdi.h和rdi.c:定义格式本身的类型和函数src/lib_rdi/rdi_parse.h和rdi_parse.c:解析用的辅助函数src/lib_rdi_make:构建和序列化 RDI 数据的库,还在开发中
仓库里还有个 radbin 工具,也可以在调试器里用 --bin 参数调用。它能做两件事:把原生调试信息格式转成 RDI,以及把 RDI 文件的内容 dump 成文本。README 里提到的具体命令就这一个,别的用法得看随 release 附带的文档。
RAD Linker:配套的链接器
同一批人还在做一个链接器,叫 RAD Linker,专门优化巨型可执行文件的链接速度,产出 x64 PE/COFF 二进制。
它默认生成标准 PDB,但也可以直接原生输出 RDI。这样做有两个好处:调试时省掉按需转换的开销;另外超大的可执行文件用传统工具链可能生成坏 PDB(内部 32 位表溢出),RDI 没有这个问题。
README 里提到他们的测试用例中调试信息达到多个 GB(原文在此处截断,没有给出完整数字)。
怎么用
预编译二进制在 GitHub Releases。
有个容易踩的坑:仓库根目录的 README 不讲用法,它只是一份技术概览。真正的使用说明(含操作指令和技巧)打包在 release 压缩包里;本地构建的话,构建完去 build 文件夹里找。
我的看法
这个项目的看点不在“又一个调试器”,而在它试图重做整条链路:调试信息格式(RDI)和链接器(RAD Linker)都在自己手里。Windows 开源生态里图形化原生调试器本来就少,敢对 PDB 开刀的更少。
如果你在做大型 C/C++ Windows 项目,或者被超大 PDB 折磨过,现在可以试用。ALPHA 阶段的工具最缺的就是真实用户的崩溃报告,顺手提个 issue 就算帮上忙了。别急着替换主力调试器,先在非关键任务上跑一段时间。