RAD Debugger: Native graphical debugging and fast linking for huge projects
A native graphical debugger and fast linker for huge C/C++ projects, using RDI to reduce PDB conversion and speed linking.
GitHub EpicGames/raddebugger Updated 2026-10-08 Branch master Stars 7.9K Forks 382
C/C++ Graphical debugger RAD Linker RDI Windows x64 Linux x64

🧭 Decision Guide

Try it if you

  • You debug native multi-process C/C++ programs on Windows x64 using PDBs.
    The README section “The RAD Debugger Project” states that it currently supports only local-machine Windows x64 debugging with PDBs.
  • Your x64 project has multi-GB debug information and linking time is a compile-debug cycle bottleneck.
    The README section “The RAD Linker” targets huge linking projects and reports 50% faster linking in cases with multi-GB debug information.
  • You need to convert PDBs to RDI or inspect RDI contents with radbin.
    The README section “The RAD Debug Info (RDI) Format” says radbin converts native debug information and produces textual RDI dumps.

Skip it if you

  • You need native Linux debugging or DWARF debug information support.
    The README says Linux debugging and DWARF support are planned future expansions.
  • Your build workflow depends on link-time optimizations.
    The README section “The RAD Linker” explicitly states that link-time optimizations are not currently supported.
  • You need remote debugging or support for architectures other than x64.
    The README describes the current debugger as local-machine Windows x64, while remote debugging and other architectures are future roadmap directions.
  • You require a mature debugger with complete usage documentation.
    The README marks the debugger as ALPHA and explicitly says the main README does not document debugger usage instructions and tips.

Requirements

  • Windows builds require Microsoft C/C++ Build Tools v15 (2017) or later and the Windows SDK; MSVC or Clang can be used.
  • Windows command-line builds require MSVC or Clang to be callable; the README example uses the x64 Native Tools Command Prompt.
  • Linux x64 builds require GCC or Clang plus development packages for libfreetype, libx11, libxext, libxfixes, libxrandr, libgl, and libegl.
  • The current debugger runtime condition is local-machine Windows x64 debugging with PDBs.
  • RAD Linker creates as many worker threads as CPU cores by default; /rad_workers can limit workers when running multiple linkers in parallel.

First step (verbatim from README)

build

Watch out

  • Running build directly produces debug mode without optimizations, so performance may be worse.
    The README section “3. Building” says the default build produces a debug mode executable that may perform worse.
  • build release significantly increases build time.
    The README section “3. Building” explicitly says the release-mode build will take significantly longer.
  • Do not casually enable /rad_large_pages on standard Windows, because it can quickly fragment memory and force a reboot.
    The README section “The RAD Linker” recommends large pages only for Docker or VM environments reset after each link.
  • Linux dependency names differ by distribution, so the Ubuntu and Arch commands are not interchangeable.
    The README section “Installing Dependencies” provides separate apt install and pacman -S --needed commands.

Alternatives

  • MSVC Linker:It is a better fit when the project depends on link-time optimizations, which RAD Linker does not yet support.
    The RAD Linker

Not stated in the README

  • The main README does not describe the debugger's detailed usage flow, shortcuts, or debugging tips.
  • The provided material does not list the complete supported Windows compiler, PDB version, or language-feature range for RAD Debugger.
  • The provided material does not establish whether a Linux x64 build already provides native Linux debugging.
  • The provided material does not provide test coverage, crash-rate, or stability data for RAD Debugger or RAD Linker.
  • The README mentions a benchmark, but the supplied material omits the full benchmark table, so performance across project sizes cannot be determined.
  • The provided material does not specify the platforms, package contents, or compatibility details of the pre-built release binaries.

💡 Deep Analysis

6
No I develop native programs on Linux x64 using DWARF debug information. Can I use RAD Debugger directly today instead of waiting for its future Linux/DWARF support?
For: A low-level developer on Linux x64 who wants to research the debugger while debugging native Linux programs with DWARF

No: Linux x64 is currently a source-development platform, not the debugger’s stated supported target, and DWARF support remains a future direction.

  • The README explicitly limits the current debugger to “local-machine Windows x64 debugging with PDBs,” so native Linux debugging and DWARF are outside the current support scope.
  • The README describes “native Linux debugging and DWARF debug info” as future expansion, not an existing capability.
  • The project does provide a Linux x64 development path with GCC or Clang and dependencies such as FreeType, X11, X11 extensions, GL, and EGL. This shows that the code can be developed on Linux; it does not establish that Linux/DWARF targets can be debugged.

A Linux x64 user can therefore build and study the project, but should not treat the current version as a direct replacement for a Linux/DWARF debugger.

  • 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 builds require GCC or Clang, FreeType, X11, GL, EGL, and related libraries.
sudo apt update && sudo apt install build-essential
Not stated in the README:The README does not provide an expected date or branch status for Linux debugging support.;The README does not state which features currently work in Linux build artifacts or whether any partial DWARF conversion path exists.
Yes My x64 PE/COFF project produces multi-gigabyte debug information, and standard PDBs occasionally break because of internal 32-bit table overflows. Should I try RAD Linker with native RDI?
For: A Windows build-toolchain engineer responsible for multi-gigabyte PDBs and very large x64 PE/COFF executables

Yes: this is exactly the large-linking scenario described by the README, provided that the project does not depend on LTO.

  • RAD Linker targets “generating x64 PE/COFF binaries” and can create RDI natively. One stated purpose is handling “huge executables that otherwise create broken PDBs that overflow internal 32-bit tables.”
  • In the README’s tests, projects with multiple gigabytes of debug information achieved link times about 50% faster. This is a project benchmark and may not reproduce for every build.
  • Its command-line syntax is fully compatible with MSVC, and it can still generate standard PDB files, so adoption does not require an immediate switch to RDI-only output.
  • The README explicitly says that link-time optimizations are not supported, so an LTO-dependent project cannot assume a seamless migration.

For an x64 PE/COFF project with genuinely huge debug information and no LTO dependency, RAD Linker/RDI is a strong candidate. With mandatory LTO, it is not currently a direct replacement.

  • 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.
Not stated in the README:The README does not specify compatibility with the project’s incremental linking, third-party libraries, signing, or release workflows.;The README provides no complete coverage data for templates, inlining, and exception information after PDB-to-RDI conversion.
It depends I plan to enable `/rad_large_pages` for large x64 PE/COFF links inside Docker or virtual machines. Is the README’s additional 25% link-time reduction enough to justify that choice?
For: A Windows x64 toolchain engineer who wants to test large-page linking inside Docker or virtual machines

It depends: the README reports a clear performance benefit and recommends isolated environments, but it also warns about Windows large-page instability.

  • The README says that enabling large pages can “reduce link time by another 25%,” but this is a project benchmark and does not describe your project size, memory configuration, or concurrency.
  • The option must be explicitly enabled with /rad_large_pages; it is off by default.
  • The project recommends using it only in resettable environments such as Docker or VMs, because standard Windows environments may fragment memory quickly and force a reboot.
  • The option applies to RAD Linker’s large-link workflow; it does not imply the same benefit for the debugger or RDI itself.

Thus, it is worth testing in a resettable isolated environment. For a long-lived standard Windows workstation, the README’s risk warning does not support enabling it by default.

  • 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.
Not stated in the README:The README does not specify the Windows permissions, host configuration, or container parameters required for large pages in Docker or VMs.;The README provides no failure rate, fragmentation rate, or reboot-frequency data across different projects.
Yes I run several large x64 link jobs in parallel on the same Windows machine, while RAD Linker creates one worker per CPU core by default. How should I determine whether it will cause resource contention?
For: A build-infrastructure engineer running multiple large link jobs in parallel on a Windows machine with limited CPU and memory

Yes: the README provides a control for parallel linking, but it does not define the correct concurrency configuration for your machine.

  • RAD Linker creates as many worker threads as CPU cores by default. When several linkers run simultaneously, each job may compete for the full CPU and memory capacity.
  • The README explicitly provides /rad_workers to limit the worker count of an individual linker, directly addressing parallel-build scenarios.
  • The linker targets “gigantic executables,” so a single link may already have substantial memory pressure; the README gives no peak-memory curve for different worker counts.
  • /rad_large_pages is not a general parallelism solution. The README warns that, on standard Windows environments, it can quickly fragment memory and force a reboot.

It is therefore suitable for a parallel build system, but /rad_workers must be treated as a scheduling parameter for each link process. Large pages should not be enabled by default.

  • 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.
Not stated in the README:The README does not provide measured relationships between peak memory, worker count, and link time for a single job.;The README does not state whether the build system can generate `/rad_workers` dynamically from remaining machine memory.
It depends In a Windows x64 C/C++ toolchain, I need to convert PDBs to RDI, inspect RDI text dumps, and possibly construct or serialize RDI myself. Is the RAD Debugger project a suitable foundation?
For: A toolchain developer who wants to convert PDBs to RDI, inspect debug-information contents, and study C/C++ debug formats

It depends: the project already provides conversion and parsing components, but RDI construction, serialization, and interfaces are still evolving, so it should not be treated as a fully stable public standard.

  • radbin can convert native debug-information formats to RDI and produce textual dumps of RDI contents; the debugger can also access it through the --bin entry point.
  • src/lib_rdi defines the format types and functions in rdi.h and rdi.c, while rdi_parse.* provides parsing helpers, making the code suitable for format research.
  • The README explicitly calls src/lib_rdi_make an “in-progress library for constructing and serializing RDI data,” so interfaces for generating RDI may change.
  • RDI is designed as the debugger’s native consumption format, not described as a stable cross-tool exchange standard.

It is suitable as a research, prototyping, or in-house toolchain foundation. If you need a long-term stable external format contract, version pinning and compatibility policy must be established first.

  • 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
Not stated in the README:The README does not define RDI version-compatibility rules, file-stability guarantees, or cross-version migration tools.;The README does not state `radbin` coverage for complex templates, inlining, macros, or exception debug information.
It depends I maintain a large Windows x64 C/C++ game client whose build artifacts use PDBs, and I frequently need to debug multiple processes at once. Can RAD Debugger serve as my daily debugger?
For: An engineer maintaining a large Windows x64 C/C++ game client that uses PDBs and needs graphical multi-process debugging

It depends: the platform, debug format, and debugging model match, but the project is still Alpha and should not automatically replace a mature debugger.

  • The README explicitly supports “local-machine Windows x64 debugging with PDBs” and describes the tool as a “native, user-mode, multi-process, graphical debugger,” matching this client environment.
  • The current release is v0.9.29-alpha; the README asks users to submit crash dumps, build information, reproduction steps, and test executables, indicating that stability is still being validated.
  • The main README does not document debugger usage. Detailed instructions are included with releases or in the build directory after a local build.

It is therefore suitable for evaluation and supplementary debugging in a Windows x64/PDB workflow, but not as the sole daily debugger while it remains 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.
  • Project data: latest_release is v0.9.29-alpha
Not stated in the README:The README does not state whether exception handling, breakpoints, thread control, and multi-process attach cover the full requirements of the existing debugger.;The README provides no startup-time, symbol-loading, or stability data for a client of this scale.

✨ Highlights

  • RAD Linker is 50% faster in multi-GB debug-info cases
  • RDI converts and parses formats such as PDB
  • Native Windows x64 support for multi-process graphical debugging
  • MIT-licensed codebase primarily written in C with C++

🔧 Engineering

  • RAD Debugger provides local Windows x64, PDB-based multi-process graphical debugging.
  • radbin converts native debug information and dumps RDI contents via --bin.
  • RAD Linker generates x64 PE/COFF and can natively produce RAD Debug Info.

⚠️ Risks

  • The README explicitly marks the debugger as ALPHA, so stability remains an issue.
  • The debugger currently supports only local Windows x64 and PDB; Linux and DWARF are planned.
  • Enabling /rad_large_pages on standard Windows can quickly fragment memory and force a reboot.
  • RAD Linker does not yet support link-time optimizations; the feature is on the roadmap.

👥 For who?

  • Teams maintaining huge x64 projects with multi-GB debug information.
  • C/C++ developers needing local Windows x64 PDB multi-process graphical debugging.
  • Contributors extending debug-information toolchains with RDI or radbin.