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:
- Không dừng thực thi: Code của bạn tiếp tục chạy.
- Mã Màu:
ray($user)->green()hoặcray()->error('Failed'). - Đo Hiệu Năng:
ray()->measure(); heavyProcess(); ray()->measure(); // Hiển thị thời gian đã trôi qua - 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.