
Erlang Debugger
Erlang Debugger is a graphical tool for debugging and testing Erlang programs.
What Erlang Debugger is
Erlang Debugger is a graphical tool for debugging and testing Erlang programs. It supports line, conditional, and function breakpoints, and lets users attach to a process to step, continue, finish, skip, or stop execution. The Attach Process window displays variable bindings and allows edits when values can be represented in the running system. A Monitor window shows interpreted modules and process information. Debugger can record interpreted function calls for stack navigation, while global mode interprets code on known nodes and displays their processes. Modules need debug information, such as information added with `erlc +debug_info`. Debugging has performance and runtime tradeoffs: interpreted code runs more slowly, each debugged process adds a meta process, and timers may behave differently while execution is paused. Code replacement does not work for debugged processes. The tool is free and open source, and is listed for Linux, macOS, and Windows. Erlang/OTP releases from version 18.0 onward use the Apache License 2.0.
Good
- Supports line, conditional, and function breakpoints
- Allows process stepping and variable inspection
- Global mode displays processes on known nodes
- Free and open source
Watch out
- Debugged code runs slower than regularly compiled modules
- Debugged processes add a meta process
- Timers can behave differently during debugging
- Code replacement does not work for debugged processes
Who it suits
This tool suits Erlang developers who need process inspection, breakpoints, or remote-node debugging. Users should be familiar with Erlang and account for its interpreted-code tradeoffs.
Verdict
Erlang Debugger offers detailed process controls and inspection for Erlang development across Linux, macOS, and Windows. It is a focused option, but debugging can affect performance and program timing.
The facts
Each one read from Erlang Debugger's own pages, with the date it was checked.
What it does
- Breakpoints
- It supports line, conditional, and function breakpoints; when a process reaches a breakpoint, it pauses for commands such as step, skip, or continue.checked 9 Oct 2026
- Code loading
- Reinterpreting a module does not change the code version used by processes already executing the previous interpreted version.checked 9 Oct 2026
- Code replacement limitation
- Code replacement does not work for debugged processes because they use code stored when their modules were interpreted.checked 8 Oct 2026
- Distribution
- The Erlang/OTP download page offers source builds, Windows installers, and package-manager instructions for macOS and several Linux distributions.checked 8 Oct 2026
- Inspect variables
- The Attach Process window displays variable bindings and allows editing values, with some runtime values not editable unless representable in the running system.checked 8 Oct 2026
- Intended users
- The introduction assumes readers are familiar with the Erlang programming language.checked 8 Oct 2026
- License
- Erlang/OTP has been released under Apache License 2.0 since OTP 18.0.checked 9 Oct 2026
- Maintainer
- The Erlang/OTP unit at Ericsson is the main developer and maintainer of Erlang/OTP.checked 9 Oct 2026
- Performance
- Interpreted code runs slower than regularly compiled modules, and Debugger creates an additional meta process for each debugged process.checked 8 Oct 2026
- Performance limit
- Interpreted code runs more slowly than regularly compiled code, and each debugged process adds a meta process.checked 9 Oct 2026
- Prerequisite
- Modules to be debugged must be compiled with debug information enabled.checked 9 Oct 2026
- Process controls
- When attached to a process, users can step, continue, finish, skip, or stop its execution.checked 8 Oct 2026
- Process inspection
- Attaching to a process lets the user control execution, inspect variable values, and set breakpoints.checked 9 Oct 2026
- Process monitoring
- The Monitor window displays interpreted modules and information about processes executing interpreted code.checked 9 Oct 2026
- Purpose
- Erlang Debugger is a graphical interface for the Erlang interpreter used to debug and test Erlang programs.checked 9 Oct 2026
- Remote nodes
- Global mode interprets code on all known Erlang nodes and displays eligible processes from other nodes for attachment.checked 9 Oct 2026
- Stack trace
- Debugger can record interpreted function calls for stack navigation, and recording tail calls uses more memory and slows execution when there are many tail-recursive calls.checked 8 Oct 2026
- Supported interpreter dependencies
- The interpreter depends on the Kernel, STDLIB, and WX applications, and modules in those applications or Debugger cannot be interpreted.checked 9 Oct 2026
- Timer behavior
- Programs with timers can behave differently during debugging, especially when a process is stopped while other processes continue running.checked 9 Oct 2026
- Timing limitation
- Programs with timers can behave differently while debugged, and stopping a process can allow time-outs in other processes to occur.checked 8 Oct 2026
- Tracing caveat
- Debugger may start tracing processes that execute interpreted code, which can conflict with tracing started by other means.checked 9 Oct 2026
Alternatives to Erlang Debugger
- 1
SingleStore Helios
Free planWebAPILinuxmacOS8.1Free plan - 2

Amazon ElastiCache
Free planWebAPILinuxmacOS7.9From $0.09 a month - 3

Aerospike Database
Free planOpen sourceWebAPILinuxmacOS7.8Free plan - 4
VoltDB
Free planOpen sourceWebAPILinuxmacOS7.6Free plan - 5

Apache Ignite
Free planOpen sourceAPILinuxmacOSSelf-hosted7.4Free plan - 6

Apache Geode
Free planOpen sourceAPILinuxmacOSSelf-hosted7.2Free plan
