A thin Elixir wrapper for the production-friendly redbug Erlang tracing debugger, providing live system debugging with Elixir syntax.
Rexbug is a thin Elixir wrapper for the `:redbug` Erlang tracing debugger, enabling developers to debug live Elixir and Erlang systems by tracing function calls, arguments, return values, and stack traces. It solves the problem of inspecting runtime behavior in production or development environments without stopping the system, using Elixir-friendly syntax.
Elixir and Erlang developers who need to debug live systems, investigate performance issues, or understand runtime behavior in production or development environments.
Developers choose Rexbug because it provides a safe, production-friendly debugging tool with Elixir syntax convenience, built on the battle-tested `:redbug` library, and includes additional utilities like dtop for system monitoring.
A thin Elixir wrapper for the redbug Erlang tracing debugger.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Translates Elixir patterns to Erlang tracing format, as shown in examples like Rexbug.start("Map.get/_ :: return"), making it more accessible for Elixir developers without deep Erlang knowledge.
Includes built-in time and event limits to prevent system overload, explicitly mentioned in the README to avoid flooding consoles with trace data from overly broad patterns.
Can debug remote nodes even without Rexbug in dependencies, demonstrated in the FAQ where tracing is done on a production node by connecting from a separate node with Rexbug loaded.
Provides Rexbug.dtop/1, an htop-like system monitor for viewing process activity, memory, and CPU usage, adding utility beyond just tracing as highlighted in the examples.
Supports tracing specific functions, modules, or argument patterns using Elixir syntax, such as Enum.member?([_, _, _], "foo"), allowing precise control over what is traced.
Has non-intuitive behavior where "Mod.fun" implicitly means "/0" arity, requiring "/_" for any arity, as noted in the known issues, which can lead to missed traces or confusion.
Debugging nodes without dependencies requires manual specification of beam file paths or cloning repos, as shown in the FAQ, adding complexity compared to integrated tools.
Focuses on tracing and logging rather than interactive debugging, lacking features like breakpoints or real-time state modification, which may not suit all debugging workflows.
As a thin wrapper for :redbug, any bugs or limitations in the Erlang tool directly affect Rexbug, and updates or features are tied to :redbug's development pace.