The dd() Loop Is Holding You Back
Every Laravel developer knows the ritual: sprinkle dd() calls, refresh, read output, delete, repeat. When that stops working, open Tinker — and lose everything after a stray typo. It works, but it's friction you don't need.
DDLess is a desktop workbench built to replace that workflow with a proper debugging and execution environment that runs without any PHP extension and without touching a config file.
Step Debugging in Seconds
Click a line number to set a breakpoint, send a request, and DDLess pauses execution right there. You get:
- Live variable inspection
- Full call stack
- Step in, step out, step over controls
Under the hood, DDLess instruments your code at runtime using AST parsing via nikic/PHP-Parser and communicates through files rather than sockets. That design choice is why it works identically on Local, Docker, WSL, or SSH — no IDE version dependency, no Xdebug setup.
For Laravel projects, DDLess auto-bootstraps the application. Point it at your project root and start debugging immediately.
A Playground Frozen at Your Breakpoint
When execution is paused, you can open the built-in Playground and run arbitrary PHP with every variable still in scope.
// Execution is paused — $order is live in scope
$order->recalculateTotals();
dump($order->total); // inspect the result before continuing
You can inspect models, test alternative code paths, modify values, and then continue execution with the updated state. It's an interactive console frozen at the exact moment your code is running.
Interactive Task Runner with Breakpoint Support
The Task Runner boots your full Laravel application and gives you a live scripting environment. Everything is available — models, services, helpers, database connections — without writing a route or an Artisan command.
Notable capabilities:
- Real-time output as your script runs
- CSV export with pagination and a progress bar built in
- Charts, interactive fields, and formatted tables rendered directly in output
- Breakpoints inside scripts — write a script, set a breakpoint, and step through it line by line
This means you can combine an interactive terminal and a step debugger in the same session.
Test Any Method Without a Full Request Cycle
Pick any class, select a method, and DDLess auto-scaffolds the parameter inputs for you. Set breakpoints inside the method and debug it directly — no routes, no HTTP requests, no test files required.
Pricing and Availability
DDLess is free for local debugging. The free desktop app includes:
- Step debugging
- Task Runner
- Method Execution
- Playground
A Pro plan adds conditional breakpoints, SSH debugging, and a PhpStorm plugin.
The debug engine is open source, so you can read exactly how the instrumentation works.
Key Takeaways
- DDLess replaces the
dd()/ Tinker loop with a full step debugger, no Xdebug or extension required - AST-based instrumentation via nikic/PHP-Parser works across Local, Docker, WSL, and SSH
- The Playground lets you run arbitrary PHP while execution is paused at a breakpoint
- The Task Runner boots your entire Laravel app for live scripting with step debugging support
- Method Execution lets you debug any class method in isolation, no routes needed
- Core features are free; Pro adds conditional breakpoints and SSH debugging
Source: What's missing from your PHP development environment — Laravel News