Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Debugbar Laravel Package

fruitcake/laravel-debugbar

Integrate PHP DebugBar into Laravel with minimal setup to inspect requests, queries, views, routes, and logs in a handy toolbar. Includes collectors, timing, memory, and profiling tools to quickly find bottlenecks during development.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:

    composer require fruitcake/laravel-debugbar
    

    Publish the config:

    php artisan vendor:publish --provider="Fruitcake\LaravelDebugbar\ServiceProvider" --tag="config"
    
  2. Enable Debug Mode: Set APP_DEBUG=true in your .env file.

  3. First Use Case: Trigger a request (e.g., visit /). The debug bar will appear at the bottom of the screen, displaying default collectors like Queries, Messages, Views, and Exceptions.

    New Feature: SQL query backtraces now include editor links for direct navigation to the query's origin in your IDE (if configured).


Key First Steps

  • View Queries: Inspect all executed database queries in the Queries tab, now with clickable file links for faster debugging.
  • Log Messages: Use debug($variable) or Debugbar::info($data) to log data.
  • Exceptions: Check the Exceptions tab for errors and stack traces.

Implementation Patterns

Core Workflows

  1. Debugging Queries:

    // Log a query manually
    Debugbar::addQuery('SELECT * FROM users', ['bindings' => []]);
    

    New: Queries now show direct editor links (if remote_sites_path/local_sites_path are configured).

  2. Timing Operations:

    Debugbar::startMeasure('render', 'Time to render view');
    // ... your code ...
    Debugbar::stopMeasure('render');
    
  3. Custom Collectors:

    // Add a custom collector
    Debugbar::addCollector(new \DebugBar\DataCollector\CustomCollector());
    
  4. Conditional Debugging:

    if (app()->environment('local')) {
        debugbar()->enable();
    }
    

Integration Tips

  • Middleware: Use Debugbar::enable() in middleware for specific routes.

    public function handle(Request $request, Closure $next) {
        debugbar()->enable();
        return $next($request);
    }
    
  • Console Commands:

    debugbar()->enable();
    // ... command logic ...
    
  • Twig Integration:

    {{ debug(user) }}  {# Logs user data #}
    {% stopwatch "process" %}
        {# Timed block #}
    {% endstopwatch %}
    
  • Livewire: Automatically captures Livewire component interactions.

  • Editor Links for SQL: Ensure remote_sites_path and local_sites_path are configured in config/debugbar.php for IDE navigation:

    'remote_sites_path' => [
        'github.com' => 'https://github.com/{username}/{repo}/blob/{branch}/',
    ],
    'local_sites_path' => [
        '/var/www/project' => 'http://localhost/project/',
    ],
    

Gotchas and Tips

Pitfalls

  1. Performance Overhead:

    • Disable unused collectors in config/debugbar.php (e.g., collectors.phpinfo = false).
    • Avoid enabling in production; use debugbar()->disable() in non-local environments.
  2. Storage Security:

    • Never enable storage.open = true in production or shared environments.
    • Use IP-based callbacks to restrict access:
      'storage' => [
          'open' => function ($request) {
              return $request->ip() === '127.0.0.1';
          },
      ],
      
  3. AJAX Requests:

    • Disable capture_ajax if experiencing issues with XHR requests:
      'capture_ajax' => false,
      
  4. Editor Links Configuration:

    • If editor links for SQL queries don’t work, verify remote_sites_path/local_sites_path mappings. For Docker/Homestead, ensure paths are container-relative.

Debugging Tips

  1. Disable Collectors Temporarily:

    debugbar()->disableCollector('queries'); // Disable queries collector
    
  2. Clear Storage:

    php artisan debugbar:clear
    
  3. Check for Conflicts:

    • Ensure no other packages (e.g., barryvdh/laravel-debugbar) are installed simultaneously.
  4. Custom Data Formatters: Override default formatting for specific classes:

    Debugbar::addDataFormatter(new \DebugBar\Data\Formatter\CustomFormatter());
    

Extension Points

  1. Custom Collectors: Extend \DebugBar\DataCollector\BaseCollector to create reusable collectors.

  2. Theme Overrides: Override the default theme by publishing assets:

    php artisan vendor:publish --provider="Fruitcake\LaravelDebugbar\ServiceProvider" --tag="public"
    
  3. Environment-Specific Config: Use .env variables to toggle features dynamically:

    DEBUGBAR_COLLECT_JOBS=true
    DEBUGBAR_THEME=dark
    
  4. Event Listeners: Hook into Debugbar::collectors to modify collectors at runtime:

    Debugbar::collectors(function ($collectors) {
        $collectors->remove('phpinfo');
    });
    
  5. Editor Links for SQL: Extend remote_sites_path/local_sites_path to support custom IDE setups (e.g., VS Code, PHPStorm). Example:

    'remote_sites_path' => [
        'gitlab.com' => 'https://gitlab.com/{username}/{repo}/-/blob/{branch}/',
    ],
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport