🔎 Debug là gì?
Tìm và sửa nguyên nhân của lỗi.
1
Hiểu nó là gì
Debug là công việc quan sát, đặt giả thuyết và kiểm tra để biết vì sao bug xảy ra.
Nói theo đời thường:
Giống thợ sửa xe lần theo dấu hiệu để biết xe không nổ máy vì hết xăng, yếu bình hay hỏng bugi.
Giống thợ sửa xe lần theo dấu hiệu để biết xe không nổ máy vì hết xăng, yếu bình hay hỏng bugi.
⚠ Chỗ ẩn dụ này hỏng
Thợ sửa xe lần theo dấu hiệu — nhưng chiếc xe không đổi trạng thái trong lúc thợ đang xem, còn phần mềm thì có.
Nhiều bug biến mất ngay khi bạn thêm dòng log vào để quan sát, vì dòng đó làm thay đổi thời điểm chạy. Đây là loại bug khó nhất trong nghề, và nó lý giải vì sao debug đôi khi giống săn ma hơn là sửa xe.
2
Code trông thế nào
// Cách nhanh nhất và vẫn hiệu quả nhất console.log('gio hang:', gioHang) // Dừng lại ngay tại dòng này để soi mọi biến debugger // Thu hẹp dần: nửa trên hay nửa dưới gây lỗi?
Debug là thu hẹp phạm vi, không phải đọc code chằm chằm cho tới lúc nhìn ra.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Có bug tái hiện được
- Cần biết giá trị thật của biến tại một thời điểm
✗ Đừng dùng khi
- Chưa tái hiện được lỗi (đi tìm cách tái hiện trước đã)
- Đoán mò rồi sửa bừa xem có hết không
Chưa cần biết: breakpoint có điều kiện, debug từ xa, đọc stack trace nhiều tầng, git bisect.
Để dành tới Mốc 3 — Tự dựng được: Bạn tự đưa được một trang lên mạng, và biết phải sờ vào đâu khi nó không lên.
Dấu hiệu bạn đã cần học nó: Khi lỗi chỉ xuất hiện trên production và bạn không tài nào tái hiện được ở máy.
4
Đi đâu tiếp
- BugThứ bạn đang đi tìm nguyên nhân.
- Test ReportNơi có log và ảnh chụp giúp thu hẹp phạm vi.
- GitCông cụ tìm ra commit nào đã làm sinh lỗi.