resources/boost/skills/debug-using-debugbar/SKILL.md
php artisan debugbar:find --issues --max=50
php artisan debugbar:get {id}
php artisan debugbar:get {id} --collector=exceptions
php artisan debugbar:queries {id}
If the storage is empty, there is nothing to debug yet — ask the user to exercise the page or endpoint first,
or trigger it yourself, then run debugbar:find again.
# List recent requests (shows summary with status, duration, memory, query count)
php artisan debugbar:find
# Filter by URI pattern (fnmatch) and/or HTTP method
php artisan debugbar:find --uri="/api/*" --method=POST
# Only show requests with issues (exceptions, slow queries, duplicates, errors)
php artisan debugbar:find --issues --max=50
# Customize issue thresholds (defaults: --min-queries=50, --min-duration=1000, --min-duplicates=2)
php artisan debugbar:find --issues --min-queries=10 --min-duration=500
# Threshold options also work standalone, filtering on just that criteria
php artisan debugbar:find --min-queries=20
--issues flags: exceptions, non-2xx status, high query count, slow queries, duplicate query groups, slow request duration, and failed queries. Issue filtering applies on top of the fetched result set — increase --max to scan further back.
Queued jobs and Artisan commands are stored too, with method set to JOB or CLI:
php artisan debugbar:find --method=JOB # queued jobs
php artisan debugbar:find --method=CLI # artisan commands
# Summary of all collectors (available collectors depend on config)
php artisan debugbar:get latest
php artisan debugbar:get {id}
# Full data for a specific collector
php artisan debugbar:get {id} --collector=exceptions
Pick the collector by issue type:
exceptions · Slow page → queries, time · Auth → auth, gate · Cache → cachequeries, models · View overhead → views · External calls → http_clientlog (Laravel log events), messages (debug() calls), logs (log file tail)If the collector name is wrong, the command lists the collectors that actually have data for that request.
# Overview with duplicate detection, slow flags and failed statements
php artisan debugbar:queries {id}
# Backtrace and params for a specific statement
php artisan debugbar:queries {id} --statement=N
# EXPLAIN plan or re-execute a SELECT
php artisan debugbar:queries {id} --statement=N --explain
php artisan debugbar:queries {id} --statement=N --result
The Flags column marks SLOW and FAILED statements; failed statements are listed again below the table with their driver error.
Two separate repetition reports follow the table, and they mean different things:
with()). Detection strips literals from the SQL, so where user_id = 1 and where user_id = 2 count as one shape.Use --statement=N on any index from those groups to get the backtrace and find the origin.
All three read commands accept --json, which is easier to parse than the tables and preserves exact numbers:
php artisan debugbar:find --issues --json # array of requests, each with an `issues` list
php artisan debugbar:queries {id} --json # statements plus `duplicate_groups` and `n_plus_one_groups`
php artisan debugbar:get {id} --json # raw collector data (`--raw` is the same thing)
debugbar:find --issues rather than debugbar:find — the issue flags surface the most actionable requests immediately.{id} is the request ID from the debugbar:find output, or use latest to inspect the most recent request.debugbar:get shows which collectors have data.Dup column only counts exact duplicates (same bindings). For N+1 read the "repeated query shapes" section instead — that is where a per-record lazy load shows up.--explain and --result only work on SELECT queries, and require --statement=N. They re-execute against the current database, so results may differ from the original request.debugbar.options.db.soft_limit / hard_limit); an info statement in the output says so when it happens.debugbar:clear removes all stored data — use it to reset between debugging sessions, not mid-investigation.