- Home
- In-Memory Databases
- Erlang Debugger
Erlang Debugger
What it is
Erlang Debugger is a free, open-source graphical interface for debugging and testing Erlang programs on Linux, macOS, and Windows. It supports line, conditional, and function breakpoints, and lets you attach to a process to step, continue, finish, skip, or stop execution. The Attach Process window shows variable bindings and permits editing values when they can be represented in the running system. A Monitor window lists interpreted modules and process information. Debugger can record interpreted calls for stack navigation, although tail-call recording uses more memory and can slow programs with many tail-recursive calls. Modules need debug information, such as that produced with `erlc +debug_info`. Global mode can interpret code on known remote nodes and show their processes. Interpreted code runs slower than compiled code, each debugged process adds a meta process, and timer behavior can change during debugging. Code replacement does not apply to debugged processes.
For and against
For
- Free and open-source
- Supports Linux, macOS, and Windows
- Line, conditional, and function breakpoints
- Remote-node debugging through global mode
- Process stepping and variable inspection
Against
- Requires modules built with debug information
- Interpreted code runs slower
- Each debugged process adds a meta process
- Timers may behave differently while debugging
The verdict
Erlang Debugger provides process controls, breakpoints, inspection, and remote-node support for Erlang programs. Its runtime overhead and debugging-specific behavior should be considered before using it on timing-sensitive or performance-sensitive work.
Who it suits
It suits Erlang developers familiar with the language who need local or remote process inspection on Linux, macOS, or Windows. It is also relevant when conditional breakpoints and editable variable bindings are useful.
On the record
- 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 · read 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 · read 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 · read 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 · read 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 · read 8 Oct 2026
- Intended users
- The introduction assumes readers are familiar with the Erlang programming language.erlang.org · read 8 Oct 2026
- License
- Erlang/OTP has been released under Apache License 2.0 since OTP 18.0.beta.erlang.org · read 9 Oct 2026
- Maintainer
- The Erlang/OTP unit at Ericsson is the main developer and maintainer of Erlang/OTP.beta.erlang.org · read 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 · read 8 Oct 2026
- Performance limit
- Interpreted code runs more slowly than regularly compiled code, and each debugged process adds a meta process.erlang.org · read 9 Oct 2026
- Prerequisite
- Modules to be debugged must be compiled with debug information enabled.erlang.org · read 9 Oct 2026
- Process controls
- When attached to a process, users can step, continue, finish, skip, or stop its execution.erlang.org · read 8 Oct 2026
- Process inspection
- Attaching to a process lets the user control execution, inspect variable values, and set breakpoints.erlang.org · read 9 Oct 2026
- Process monitoring
- The Monitor window displays interpreted modules and information about processes executing interpreted code.erlang.org · read 9 Oct 2026
- Purpose
- Erlang Debugger is a graphical interface for the Erlang interpreter used to debug and test Erlang programs.erlang.org · read 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 · read 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 · read 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 · read 9 Oct 2026