Cut link times in half for multi-gigabyte executables and debug them
When debug information reaches several gigabytes in large projects, the wait time during the linking phase interrupts the development flow. This repository bundles a native debugger, a dedicated linker, and a custom debug information format created by Epic Games. It currently operates on Windows x64 local environments based on PDB files, with plans to extend support to Linux in the future.
Current support scope in alpha stage
The project is currently in alpha version and supports only Windows x64 local debugging. The debugger operates by reading PDB files, while support for Linux x64 and DWARF debug information is planned for the future. The development team requests that bug reports, dump files, and reproduction steps be submitted together to improve the debugger's stability. The top priority at this stage is ensuring the reliability of core components in the Windows development environment.
RDI format and radbin utility
The debugger uses its own RAD Debug Info (RDI) format instead of the PDB or DWARF generated by existing toolchains. The radbin utility converts DWARF information contained in PDB or PE/ELF files into the RDI format, or dumps the contents of an RDI file as text. This conversion is performed automatically when needed to maintain compatibility with existing tools. The definition and parsing logic for the RDI format are composed of C language files located in the src/lib_rdi folder.
RAD Linker for large-scale projects
RAD Linker is a linker that generates x64 PE/COFF binaries, and it is particularly fast when creating huge executables.
- Large page support Activating the
/rad_large_pagesoption can reduce link time by an additional 25%. However, because Windows large page support can be unstable, it is recommended to use it only in environments that reset, such as Docker or VMs. - PDB overflow resolution It provides an option to generate the RDI format directly to avoid PDB corruption caused by internal 32-bit table overflows.
Local build environment setup
In a Windows x64 environment, Microsoft C/C++ Build Tools v15 (2017) or higher and the Windows SDK are required. Running the build.bat script in a terminal where vcvarsall.bat x64 has been executed builds the debugger. In a Linux x64 environment, GCC or Clang and several dynamic library development packages such as libfreetype and libx11 are needed. Run ./build.sh to build, and adding the release argument generates an optimized binary. To build radlink or radbin in addition to the debugger, you must pass the corresponding argument.
Pre-adoption checkpoints
Since this tool is still in alpha version, it is appropriate for development and testing environments rather than production. It currently supports only Windows x64 local debugging, while Linux support is a stage on the roadmap. The linker's large page feature can cause memory fragmentation in standard Windows environments, so caution is required. Additionally, link time optimization (LTO) is not yet supported, though LTO using clang is planned for the future. You should determine whether your project scale and environment match the tool's current support scope before deciding to adopt it.