FREEDOM251

Freedom251 › Debuggers

Erlang Debugger

Paid LinuxMacWindows

Visit Erlang Debugger Alternatives

Erlang Debugger's own site

What Erlang Debugger is

Erlang Debugger is a graphical tool for debugging and testing Erlang programs on Linux, macOS, and Windows. Developers can set line, conditional, and function breakpoints, then attach to a process to step through, continue, finish, skip, or stop its execution. The Attach Process window shows variable bindings and permits edits when a value can be represented in the running system. A Monitor window displays interpreted modules and information about processes running interpreted code. Debugger can record interpreted function calls to help navigate a stack trace; recording tail calls can use more memory and slow execution when many tail-recursive calls are involved. For distributed work, global mode interprets code on known nodes and displays their processes. Modules need debug information, for example by compiling with `erlc +debug_info`. Erlang Debugger is free and open source, and its supported language is Erlang. Debugging changes runtime behavior: interpreted code runs more slowly than regularly compiled code, and each debugged process adds a meta process. Timers may behave differently, code replacement does not work for debugged processes, and tracing may conflict with tracing started by other means. The introduction is intended for readers familiar with Erlang.

Who it suits

Erlang developers who need to inspect and control processes, set breakpoints, or navigate interpreted calls can use its process controls and monitoring window. It also suits teams working with known remote nodes, provided they account for global-mode and runtime caveats.

What it does well

  • Free and open source.
  • Available for Linux, macOS, and Windows.
  • Supports line, conditional, and function breakpoints.
  • Process controls include stepping, continuing, finishing, skipping, and stopping.
  • Global mode can display processes from known nodes.

What to know first

  • Debugged code runs slower than regularly compiled modules.
  • Each debugged process adds a meta process.
  • Timer behavior can differ during debugging.
  • Code replacement does not work for debugged processes.

Limits

The facts give no free-plan or cheapest-plan quotas. Debugging itself has limits: interpreted code runs more slowly, timers can behave differently, and code replacement does not work for debugged processes.

Getting started

  1. Visit the Erlang Debugger documentation site.
  2. Install Erlang/OTP using a source build, a Windows installer, or package-manager instructions for macOS or supported Linux distributions.
  3. Compile the modules to debug with debug information, such as `erlc +debug_info`.
  4. Open Debugger and interpret the modules you want to inspect.
  5. Attach to a process to control execution, inspect values, or set breakpoints.

Verdict

Choose Erlang Debugger when you need a graphical way to test Erlang programs, inspect processes, or control execution with breakpoints. Look elsewhere if your debugging work depends on normal execution speed, code replacement, or timer behavior remaining unchanged.

Questions

What does Erlang Debugger do?

It provides a graphical interface for debugging and testing Erlang programs, including process controls, breakpoints, variable inspection, and monitoring.

What does it cost?

It is free and open source.

Which platforms does it support?

It is listed for Linux, macOS, and Windows.

Can it debug remote nodes?

Yes. In global mode it interprets code on known nodes and displays their processes. The documentation warns against running global mode on multiple nodes in a network because they can interfere.

What do modules need before debugging?

Modules need debug information, for example by compiling with `erlc +debug_info`.

Which language does it support?

Erlang is the supported language.

Facts from Erlang Debugger's own pages

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

Where Erlang Debugger stands on Freedom251

Look at these too