From xdebug
Debugs PHP code using Xdebug tools like xtrace, xstep, xprofile, xcoverage, xback for tracing execution, stepping with breakpoints, profiling performance, coverage analysis, and backtraces.
npx claudepluginhub koriym/xdebug-mcp --plugin xdebugThis skill uses the workspace's default tool permissions.
Non-invasive PHP debugging and analysis tools. No var_dump() or code modification needed.
Interprets Tracy debugger output for PHP apps: BlueScreen errors, Tracy Bar (SQL queries, execution time, memory), dumps. For localhost debugging of 500 errors, blank pages, exceptions, slow loads, N+1 queries.
Guides systematic debugging techniques including scientific method, reproduction checklists, hypothesis testing, and binary search for bugs, performance issues, and unexpected behavior across codebases.
Share bugs, ideas, or general feedback.
Non-invasive PHP debugging and analysis tools. No var_dump() or code modification needed.
Tools are installed globally via composer. Use absolute paths:
| Tool | Path |
|---|---|
| xtrace | ~/.composer/vendor/bin/xtrace |
| xstep | ~/.composer/vendor/bin/xstep |
| xprofile | ~/.composer/vendor/bin/xprofile |
| xcoverage | ~/.composer/vendor/bin/xcoverage |
| xback | ~/.composer/vendor/bin/xback |
| User Request | Tool |
|---|---|
| Trace, execution flow, show function calls | xtrace |
| Step debugging, breakpoints, inspect variables, track variable changes | xstep |
| Profile, performance, bottlenecks, slow code | xprofile |
| Coverage, test coverage, which lines tested | xcoverage |
| Backtrace, call stack, how did we get here | xback |
The word "trace" can mean different things:
xtrace (records execution from start to finish)xback (shows call stack at a point)xstep (interactive with breakpoints)Trace execution forward from start to finish. Captures complete execution flow, function calls, parameters, and timing data.
Output: JSON with $schema URL for semantic details and AI analysis strategies.
Key fields: {lines, functions, max_depth, db_queries}
~/.composer/vendor/bin/xtrace [--json] [--context=TEXT] [--include-vendor=PATTERNS] -- command
~/.composer/vendor/bin/xtrace --context="Debug login" -- php login.php
~/.composer/vendor/bin/xtrace --context="Test analysis" -- vendor/bin/phpunit tests/UserTest.php
~/.composer/vendor/bin/xtrace --include-vendor="bear/*" -- php app.php
Stop at breakpoint, step forward N times, record variable changes at each step. See how variable values affect branching ("this variable was X, so it went into this branch").
Output: JSON with $schema URL for semantic details.
Key fields: {breaks: [{step, location, variables}]} - Variables show diff only (changed values).
~/.composer/vendor/bin/xstep --break=file.php:line --steps=N [--context=TEXT] [--include-vendor=PATTERNS] -- command
--break=file.php:line - Single breakpoint location--break=file.php:line:condition - Conditional (e.g., $user==null)--steps=N - Step forward N times from breakpoint--watch=EXPR - Only record steps when expression value changes (can specify multiple times)# Step 20 times from line 42
~/.composer/vendor/bin/xstep --break="user.php:42" --steps=20 --context="Track auth" -- php user.php
# Conditional breakpoint
~/.composer/vendor/bin/xstep --break="user.php:15:\$id==null" --steps=10 -- php user.php
# Watch variable changes in loop
~/.composer/vendor/bin/xstep --break="loop.php:10" --watch="\$i" --steps=100 -- php loop.php
# Multiple watches
~/.composer/vendor/bin/xstep --break="app.php:25" --watch="\$user->getStatus()" --watch="count(\$items)" --steps=50 -- php app.php
Identify performance bottlenecks with precision data.
Output: JSON with $schema URL for semantic details and AI analysis strategies.
Key fields: {time_ms, memory_mb, bottlenecks} - Bottlenecks auto-identified.
~/.composer/vendor/bin/xprofile [--json] [--context=TEXT] [--include-vendor=PATTERNS] -- command
~/.composer/vendor/bin/xprofile --context="Optimize processing" -- php process.php
~/.composer/vendor/bin/xprofile --json -- php script.php
~/.composer/vendor/bin/xprofile --include-vendor="doctrine/*" -- php app.php
Collect code coverage data for PHPUnit or any PHP script. Shows only uncovered lines (compact output).
Output: JSON with $schema URL for semantic details.
Key fields: {summary: {coverage_percent, covered_lines, uncovered_lines}, uncovered: {file: [lines]}}
~/.composer/vendor/bin/xcoverage [--include-vendor=PATTERNS] -- command
~/.composer/vendor/bin/xcoverage -- vendor/bin/phpunit # PHPUnit
~/.composer/vendor/bin/xcoverage -- php script.php # Any PHP script
~/.composer/vendor/bin/xcoverage -- vendor/bin/phpunit
~/.composer/vendor/bin/xcoverage --include-vendor="bear/*,ray/di" -- vendor/bin/phpunit
~/.composer/vendor/bin/xcoverage -- vendor/bin/phpunit --filter testMethod
Get call stack (backtrace) at a specific line. Shows "who called this?" - the chain of function calls that led to this point.
Output: JSON with $schema URL for semantic details.
Key fields: {backtrace: [{file, line, function, args}]}
~/.composer/vendor/bin/xback [--break=SPEC] [--depth=N] [--context=TEXT] -- command
~/.composer/vendor/bin/xback -- php script.php # First line
~/.composer/vendor/bin/xback --break=app.php:50 -- php app.php # At breakpoint
~/.composer/vendor/bin/xback --depth=20 -- php main.php # Deep trace
| Option | Description |
|---|---|
--json | AI-optimized JSON output |
--context=TEXT | Add description for AI analysis |
--include-vendor=PATTERNS | Include vendor packages |
By default, vendor code is excluded to focus on your code. Use --include-vendor when needed:
--include-vendor="bear/*" # Include specific framework
--include-vendor="bear/*,ray/di" # Multiple packages
--include-vendor="*/*" # Include all vendor (framework debugging)