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

Backtrace Laravel Package

spatie/backtrace

Spatie Backtrace makes PHP backtraces easier than debug_backtrace(): frames are aligned correctly and exposed as Frame objects with file, line, class, method, and optional arguments. Simple API to capture, inspect, and work with stack traces.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Debugging & Observability: Enables richer, more actionable error traces for PHP/Laravel applications, improving developer productivity and reducing MTTR (Mean Time to Resolution).
  • Custom Error Pages & Logging: Facilitates building detailed error reporting systems (e.g., Sentry, custom dashboards) with structured, human-readable backtraces.
  • Security & Compliance: Supports auditing and debugging security incidents (e.g., failed auth, injection attempts) with precise context.
  • Performance Profiling: Helps identify bottlenecks by capturing method arguments and object states in traces (when enabled).
  • Build vs. Buy: Buy—this is a lightweight, open-source alternative to commercial APM tools (e.g., New Relic, Datadog) for PHP stacks.
  • Roadmap Priorities:
    • Integrate with existing error handlers (e.g., Laravel’s App\Exceptions\Handler).
    • Extend argument reduction for domain-specific types (e.g., Eloquent models, custom DTOs).
    • Add support for async/queue job traces (e.g., Laravel Queues).

When to Consider This Package

  • Adopt if:

    • Your team relies on PHP/Laravel and struggles with unreadable debug_backtrace() output.
    • You need structured backtraces for custom error reporting, logging, or monitoring.
    • You want to reduce noise in traces (e.g., filter vendor frames, trim paths).
    • Your application handles sensitive data and requires argument sanitization (via reducers).
    • You’re building debugging tools (e.g., IDE plugins, CLI debuggers) or SRE dashboards.
  • Look elsewhere if:

    • You need full-stack traces (e.g., JavaScript/Python integration)—use a dedicated APM tool.
    • Your stack is non-PHP (e.g., Node.js, Go).
    • You require real-time performance metrics (e.g., latency, throughput)—combine with tools like Blackfire or Xdebug.
    • Your team lacks PHP expertise to customize argument reducers or frame filtering.

How to Pitch It (Stakeholders)

For Executives:

*"This package transforms PHP error traces from cryptic debug spew into actionable, structured data—like a flight recorder for our code. For example, instead of seeing call_user_func_array in a stack trace, developers get the actual method name, arguments, and file context, cutting debugging time by 30–50%. It’s a lightweight, open-source alternative to commercial APM tools, with zero runtime overhead when not in use. We can use it to:

  • Improve MTTR: Build a self-service error dashboard for engineers.
  • Enhance security: Audit failed requests with full context (e.g., input data, user session).
  • Reduce costs: Avoid per-request fees from third-party APM tools for PHP stacks. Investment: Minimal (open-source, MIT-licensed). ROI: Faster releases, fewer production fires."*

For Engineering Teams:

*"Problem: PHP’s native debug_backtrace() is clunky—skewed function names, no arguments, and vendor noise make debugging painful. Solution: spatie/backtrace gives us:

  • Cleaner traces: Auto-filters vendor frames, trims paths, and labels application vs. library code.
  • Rich context: Capture method arguments (e.g., $user->id, $request->input()) and objects (when enabled).
  • Customization: Reduce sensitive data (e.g., passwords) or format complex types (e.g., DateTimeYYYY-MM-DD).
  • Laravel-ready: Works out-of-the-box with base_path() and handles edge cases like artisan CLI calls. Use Cases:
  1. Error Reporting: Replace dd() with structured traces in App\Exceptions\Handler.
  2. Logging: Log exceptions with Backtrace::createForThrowable($e)->withArguments()->limit(5).
  3. Debugging Tools: Build CLI commands or IDE plugins with startingFromFrame() to isolate issues. How to Start:
composer require spatie/backtrace

Example:

$trace = Backtrace::create()
    ->applicationPath(base_path())
    ->withArguments()
    ->reduceArguments()
    ->limit(3);

foreach ($trace->frames() as $frame) {
    logger()->debug("{$frame->class}::{$frame->method} (Line {$frame->lineNumber})", [
        'args' => $frame->arguments,
        'file' => $frame->file,
    ]);
}

Trade-offs:

  • Performance: Argument collection has a ~5–10% overhead (disable in production unless needed).
  • Complexity: Argument reducers require PHP knowledge to customize. Next Steps:
  • Integrate with our existing App\Exceptions\Handler to log enhanced traces.
  • Explore argument reducers for domain types (e.g., User models, Carbon instances)."*
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
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
twbs/bootstrap4