Hello, XR Debug

Lightweight remote PHP debugger.

rodber Β  GitHub

I've made a PHP debugger, give it a try at chevere/xr.

XR Debug light

To end 2021 I gave myself a few days to create a different piece of software and I ended up building a lightweight PHP debugger, which is a type of software used for developers to retrieve dump information about things happening in a software system.

πŸ¦„ I spawned this software in less than one week. I did this for the fun of creating something, and for the sake of a distraction-free lightweight debug experience.

# Introducing XR Debug

XR Debug is a debugger where dump messages, emitted from your code gets streamed to a debug server.

XR Debug is a software that started to grow on me the first time I saw Spatie's Ray. I noticed that the Ray debug approach could suit me and my clients. But I wanted a different user interface and portability of the debug sessions.

It is named XR Debug for "X-Ray", as X less Ray. XR Debug is a different debugger with other features, flavours and culture.

# XR Debug origins

For Chevere, I built a var_dump replacement with support for console, plain and HTML document generation. I made it to help customers/developers when needing to debug my software. It generates multiple document formats and it adapts to the need and context where the code is running to display consistent dump information.

The dump information is generated using reflection and variable analyzers. The documents generated with VarDump provide explicit information about visibility, size and length of all members.


πŸ’‘ Chevere VarDump provides vd() and vdd() which are Chevere's own version of dump() and dd().

Chevere VarDump works by writing dump strings per-line, it uses streams for that purpose which makes it memory efficient. The formatting is decoupled, enabling to use the same interface to generate customized documents, which is where I hooked XR Debug.

# Features

# πŸ’Ž Variable highlight

XR Debug uses Chevere VarDump to display good looking, consistent, not-stricly-dev-readable information. Useful for both experienced developers and newbies.

# ✨ Dump variables

You can dump single or multiple arguments and use named arguments for increased context.

xr('Hello, world!);
xr($var1, $var2, ..., $varN+1);
xr(one: $var1, cloned: $var2);

# 🐘 One-click server

XR Debug server runs on top of ReactPHP, no extra dependencies required. It will run in any compatible PHP system!

# πŸ‘» Filtering

Filter messages by topics and/or emotes as XR Debug doesn't restrict you to log levels, colors, events or anything. You build the context which each message delivered.

# ✍️ Rename "XR Debug"

Make it yours, customize the title to suit your needs.

# 🏁 Session controls

Resume, pause, stop and clear the debug session anytime.

# πŸ₯· Keyboard shortcuts

Resume R, Pause P, Stop S and Clear C.

# πŸ“Ÿ Backtrace

Understand the call stack related to any section of your code and only when you need it.

# 🌚🌝 Dark/Light modes

XR Debug comes with a theme which follows your system preferences with automatic dark/light mode switch.

# πŸ‘½ Ephemeral

And it's gone! XR Debug doesn't require to store any persistent data. No database required.

# πŸ’ HTML based

XR Debug user interface is HTML. You can benefit from all the goodies including customization, save your session for offline usage, add as shortcut app, etc.

# πŸ”₯ Beautiful looking dumps β„’

It uses FiraCode font for displaying dumps with ligatures, symbols and more.

# πŸ˜… Throwable handler

Handle exceptions/errors by hook or replace your existing handler.

# XR Debug Tiempos

Now that XR Debug is available everybody go to trace yourselves The Plague way.

Rodolfo blogging since 2012.