Debug Chuyên Nghiệp Với Laravel Telescope Và Ray

· 3 min read

Ai cũng từng làm: dd($user). Nhưng nếu vấn đề xảy ra trong AJAX request? Hoặc queued job? Hoặc scheduled task? dd() dừng process, khiến việc debug thực thi một phần không thể.

Laravel Telescope: Hộp Đen Ghi Chép Local Của Bạn

Telescope cung cấp UI để theo dõi mọi thứ đang xảy ra trong ứng dụng.

Những gì nó theo dõi:

  • Request: Header, payload, session data.
  • Database: Tất cả SQL query (và highlight những query chậm).
  • Exception: Full stack trace.
  • Job: Payload và status.
  • Mail: Xem trước nội dung email mà không gửi.
  • Notification & Event.

Cài Đặt (Chỉ Local!)

Telescope khá nặng. Bạn thường chỉ muốn nó trong dev local.

composer require laravel/telescope --dev
php artisan telescope:install
php artisan migrate

Trong AppServiceProvider.php, ngăn nó ghi trong production trừ khi cần thiết.

Debug N+1 Với Telescope

Vào tab "Queries". Nếu bạn thấy 50 query select * from comments where post_id = ?, bạn vừa tìm thấy vấn đề N+1 một cách trực quan.

Spatie Ray: Debug Siêu Cấp

Telescope là dashboard. Ray (app trả phí, lib mã nguồn mở) là ứng dụng desktop chuyên dụng để debug.

Thay vì dd($user), bạn gõ ray($user).

Tại sao Ray tốt hơn dd:

  1. Không dừng thực thi: Code của bạn tiếp tục chạy.
  2. Mã Màu: ray($user)->green() hoặc ray()->error('Failed').
  3. Đo Hiệu Năng:
    ray()->measure();
    heavyProcess();
    ray()->measure(); // Hiển thị thời gian đã trôi qua
    
  4. Tạm Dừng Code: ray()->pause() cho phép bạn tạm dừng thực thi PHP và kiểm tra state trong app Ray trước khi click "Continue".

Kết Luận

  • Sử dụng Telescope để giám sát toàn bộ hệ thống (request, DB, job).
  • Sử dụng Ray để debug dòng code cụ thể.
  • Sử dụng Xdebug chỉ khi bạn cần breakpoint từng bước (logic phức tạp).

Ngừng đoán. Bắt đầu đo lường.

Bình luận