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.
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
| Languages | C, C++, Objective-C, Rust, Zig, and Odin debug. |
| Shell | Native AppKit application and bundle — menus, file dialogs, window behaviour, key handling. |
| Rendering | CoreText font provider and a Metal renderer, including backing-scale handling, Geo3D, and blur. |
| Symbols | DWARF-to-RDI conversion, with Mach-O and dSYM discovery and section extraction. |
| Process control | A Darwin backend on x64 and ARM64 — Mach exceptions, dyld tracking, compact unwind, data breakpoints. |
| Target calls | Target-thread call machinery and platform TLS resolution on Darwin. |
| Disassembly | ARM64 disassembly via Binary Ninja’s vendored disassembler. |
Not yet
| Swift | Not handled properly — its calling conventions and linking are their own problem. |
| iOS simulator | Half works — the simulator runs targets as Mac processes. |
| Rosetta | No cross-architecture debugging. |
| Remote | No remote debugging. |
| Crash dumps | No reader for macOS crash dumps. |
| Target calls | The expression evaluator does not yet make arbitrary calls into the target. |