The RAD Debugger on macOS

generation mac8 · upstream base 7a5a649b · september 2026

The RAD Debugger is a native, user-mode, graphical debugger developed by Epic Games Tools for Windows and Linux. This is a working port of it to macOS: an AppKit shell, a CoreText font provider, a Metal renderer, and a Darwin debugging backend for Apple Silicon and Intel Macs.

The port is a long-running fork. Nothing here has been merged upstream, and it may never be. Instead it is rebased, in generations, onto pinned upstream commits. Each branch is intended to be a functional, reviewable change.

The RAD Debugger on macOS, stopped at a source breakpoint, with source, ARM64 disassembly, breakpoints, and types panels open, under the native macOS menu bar.

Stopped at a breakpoint in an example target, ARM64 disassembly open, native menu bar. Click to zoom.

Try it

Download the macOS alpha: RAD-Debugger-0.9.29-RJW-macOS-universal.dmg — a universal build, 5.4 MB, from the 0.9.29 macOS alpha release. It is Developer ID signed and notarized, so macOS opens it normally. First launch asks for macOS’s debugger authorization.

Or build from source: clone the fork and check out mac8/rjw-mac-integration. ./build.sh bundle, run under a modern Bash (macOS ships 3.2; the script wants 4.2 or newer — Homebrew’s works), produces RAD Debugger.app, ad-hoc codesigned with debugger entitlements.

Small debug targets to point it at are in rjwittams/raddebugger_examples.

What works

LanguagesC, C++, Objective-C, Rust, Zig, and Odin debug.
ShellNative AppKit application and bundle — menus, file dialogs, window behaviour, key handling.
RenderingCoreText font provider and a Metal renderer, including backing-scale handling, Geo3D, and blur.
SymbolsDWARF-to-RDI conversion, with Mach-O and dSYM discovery and section extraction.
Process controlA Darwin backend on x64 and ARM64 — Mach exceptions, dyld tracking, compact unwind, data breakpoints.
Target callsTarget-thread call machinery and platform TLS resolution on Darwin.
DisassemblyARM64 disassembly via Binary Ninja’s vendored disassembler.

Not yet

SwiftNot handled properly — its calling conventions and linking are their own problem.
iOS simulatorHalf works — the simulator runs targets as Mac processes.
RosettaNo cross-architecture debugging.
RemoteNo remote debugging.
Crash dumpsNo reader for macOS crash dumps.
Target callsThe expression evaluator does not yet make arbitrary calls into the target.