Skip to content
SPECIFICTION
Get listed

Erlang Debugger

erlang.org

WindowsmacOSLinux
Visit erlang.org
Spec score 7.6 #14 of 27 in Debuggers

What it is

Erlang Debugger is a graphical interface for debugging and testing Erlang programs. Developers can set line, conditional, and function breakpoints, then attach to a process to step, continue, finish, skip, or stop its execution. The Attach Process window displays variable bindings and allows editing values when they can be represented in the running system. A Monitor window shows interpreted modules and information about processes running interpreted code. Debugger can record interpreted function calls for stack navigation, though recording tail calls uses more memory and can slow execution when many tail-recursive calls are involved. Modules need debug information, for example from compilation with `erlc +debug_info`. Global mode can interpret code on known nodes and display their processes, but the documentation warns that using global mode on multiple network nodes can cause interference. The debugger is listed for Linux, macOS, and Windows, and Erlang/OTP releases from version 18.0 onward use the Apache License 2.0. Debugging has runtime tradeoffs: interpreted code runs slower, each debugged process adds a meta process, and timers or tracing may behave differently.

Spec sheet

Purpose
Erlang Debugger is a graphical interface for the Erlang interpreter used to debug and test Erlang programs.Read 9 Oct 2026 · erlang.org
Intended users
The introduction assumes readers are familiar with the Erlang programming language.Read 8 Oct 2026 · erlang.org
License
Erlang/OTP has been released under Apache License 2.0 since OTP 18.0.Read 9 Oct 2026 · beta.erlang.org
Breakpoints
It supports line, conditional, and function breakpoints; when a process reaches a breakpoint, it pauses for commands such as step, skip, or continue.Read 9 Oct 2026 · erlang.org
Code loading
Reinterpreting a module does not change the code version used by processes already executing the previous interpreted version.Read 9 Oct 2026 · erlang.org
Code replacement limitation
Code replacement does not work for debugged processes because they use code stored when their modules were interpreted.Read 8 Oct 2026 · erlang.org
Distribution
The Erlang/OTP download page offers source builds, Windows installers, and package-manager instructions for macOS and several Linux distributions.Read 8 Oct 2026 · erlang.org
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.Read 8 Oct 2026 · erlang.org
Maintainer
The Erlang/OTP unit at Ericsson is the main developer and maintainer of Erlang/OTP.Read 9 Oct 2026 · beta.erlang.org
Performance
Interpreted code runs slower than regularly compiled modules, and Debugger creates an additional meta process for each debugged process.Read 8 Oct 2026 · erlang.org
Performance limit
Interpreted code runs more slowly than regularly compiled code, and each debugged process adds a meta process.Read 9 Oct 2026 · erlang.org
Prerequisite
Modules to be debugged must be compiled with debug information enabled.Read 9 Oct 2026 · erlang.org
Process controls
When attached to a process, users can step, continue, finish, skip, or stop its execution.Read 8 Oct 2026 · erlang.org
Process inspection
Attaching to a process lets the user control execution, inspect variable values, and set breakpoints.Read 9 Oct 2026 · erlang.org
Process monitoring
The Monitor window displays interpreted modules and information about processes executing interpreted code.Read 9 Oct 2026 · erlang.org
Remote nodes
Global mode interprets code on all known Erlang nodes and displays eligible processes from other nodes for attachment.Read 9 Oct 2026 · erlang.org
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.Read 8 Oct 2026 · erlang.org
Supported interpreter dependencies
The interpreter depends on the Kernel, STDLIB, and WX applications, and modules in those applications or Debugger cannot be interpreted.Read 9 Oct 2026 · erlang.org
Timer behavior
Programs with timers can behave differently during debugging, especially when a process is stopped while other processes continue running.Read 9 Oct 2026 · erlang.org
Timing limitation
Programs with timers can behave differently while debugged, and stopping a process can allow time-outs in other processes to occur.Read 8 Oct 2026 · erlang.org
Tracing caveat
Debugger may start tracing processes that execute interpreted code, which can conflict with tracing started by other means.Read 9 Oct 2026 · erlang.org

Strong points and limits

Strong points

  • Line, conditional, and function breakpoints
  • Can inspect and edit some variable bindings
  • Global mode supports remote-node process displays
  • Free and open source

Limits

  • Interpreted code runs slower than compiled modules
  • Each debugged process adds a meta process
  • Debugged processes do not support code replacement
  • Timer behavior can change during debugging

Who it suits

It is for Erlang developers who need graphical process inspection, breakpoints, or remote-node debugging. Users should be comfortable with Erlang and account for the runtime effects of interpreted execution.

Verdict

Erlang Debugger provides process-level controls and inspection for Erlang programs on three desktop platforms. It is useful when those debugging controls are needed, but interpreted execution brings performance and runtime caveats.

Where Specifiction places it

Alternatives to Erlang DebuggerAll alternatives →