A Stop-the-World Debugger for Erlang (and the BEAM)

Daniel Gorin, Björn Gustavsson, Roberto Aloi
2025
1 reference

Abstract

Erlang and the BEAM are remarkable for their tracing capabilities and the type of troubleshooting this enables on live production systems. At other stages of the development cycle, though, a traditional debugger is arguably more natural and convenient to use. While Erlang/OTP has included a step-debugger (int) since its very first public release, it has generally been regarded as ineffective beyond very simple scenarios. To bridge this gap, we have extended OTP with a new debugging API (available since release 28), and used it to build edb, a novel debugger for Erlang that aims to overcome some of int’s known limitations. In this note we motivate this work, discuss technical challenges and provide a general implementation overview.

1 repository
1 reference

Code References

erlang/otp
1 file
erts/doc/notes.md
1
* An experimental `erl_debugger` module with a new debugging API. Essentially, it allows a single, local, process to be registered as the "debugger" process for the node. This process is the one that will receive messages notifying that a process hit a breakpoint. This way, the front-end implementation of a debugger (such as [edb from WhatApp](https://github.com/WhatsApp/edb)) can be decoupled from OTP.
Link copied to clipboard!