Cuộc đời thật là tươi đẹp! Mọi thứ đang trôi chảy. Công cuộc chinh phục mọi ngôn ngữ lập trình đang tiến hành thuận lợi. Bạn có một ngày "lý tưởng":
- Code chạy mượt
- Không lỗi
- Bạn tự tin đóng máy
Nhắp ngụm cà phê thơm phức và nghĩ:
"Wow, mệt quá, một ngày "chất như nước cất", thôi nghỉ, mai mở ra làm tiếp, easy thôi"
Sau đó: Một tối tưng bừng hoa lá với các...chiến hữu. Sáng hôm sau…
Bạn mở lại project, tâm hồn thư thái, yên trí là tiếp tục một ngày "chất như nước cất" nữa...
Bấm Run
Và…
LỖI!!!
Bạn lặng người, ngơ ngác.
"Ủa?? Hôm qua chạy ngon mà??? Rõ ràng đâu có thêm bớt cái gì đâu? Kỳ vậy ta?"
Chào mừng bạn đến với một trong những trải nghiệm "đau lòng":
Code hôm qua chạy, hôm nay lỗi
Code chạy hôm qua nhưng hôm nay lỗi thường do:
- thay đổi môi trường
- thay đổi dữ liệu
- cache
- version khác
- lỗi ẩn chưa lộ ra
Ví dụ thực tế
Hôm qua:
- Bạn ăn bún bò ở quán A
- Rất ngon
Hôm nay quay lại:
- vẫn quán đó
- vẫn món đó
Nhưng:
"Ủa… sao dở vậy???"
Lý do có thể là:
- đổi đầu bếp
- đổi nguyên liệu
- nước dùng khác
Code cũng vậy
7 lý do phổ biến nhất
1. Bạn đã sửa code… mà quên
Đây là lỗi thuộc loại "rối loạn tiền đình"
Hôm qua:
echo "OK";
Hôm nay:
echo $data['name'];
Và $data… không tồn tại
Bạn:
"Ủa sao lỗi???"
2. Dữ liệu đã thay đổi
Hôm qua database có dữ liệu
Hôm nay:
- bị xóa
- hoặc khác format
Ví dụ:
$user = $_POST['username'];
Hôm qua có form
Hôm nay mở trực tiếp URL
Thế là... lỗi
3. Cache "chơi khăm bạn"
- Trình duyệt / server cache
- Bạn sửa code
- Nhưng web vẫn chạy bản cũ
Bạn:
"Quái lạ, mình sửa rồi mà???"
Fix:
Ctrl + F5
clear cache
4. Environment thay đổi
Hôm qua:
PHP 7
Hôm nay:
PHP 8
Một số code cũ:
Sẽ gặp lỗi ngay
Hoặc:
local chạy OK
lên host miễn phí, ví dụ InfinityFree sẽ bị lỗi
Vì:
"luật chơi khác", phép vua thua lệ làng!
5. File chưa upload đúng
- Bạn sửa file local
- Nhưng chưa upload
Web vẫn chạy bản cũ, bạn nhắp ngụm cà phê ung dung thưởng thức bản cũ nhưng nghĩ rằng đang ngắm...thành quả mới!
Đây là lỗi:
"tưởng đã deploy… nhưng chưa"
6. Session / cookie thay đổi
Hôm qua:
đã login
Hôm nay:
session hết hạn
Code:
echo $_SESSION['user'];
"Giám sát viên" nghiêm khắc phán → undefined
7. Lỗi đã tồn tại từ trước (nhưng chưa "lộ mặt")
Đây là "boss cuối"...cực kỳ "thâm độc", không nói không rằng, lặng lẽ...phá.
Hôm qua:
chạy đúng case --> mọi thứ OK
Hôm nay:
input khác --> crash
Ví dụ:
echo 10 / $x;Hôm qua:
$x = 2 --> OK
Hôm nay:
$x = 0 --> Tai biến!
Checklist "chuẩn không cần chỉnh"
Khi gặp case này, đừng hoảng, check theo thứ tự:
- Có sửa code gì không?
- Dữ liệu có thay đổi không?
- Cache đã clear chưa?
- Environment có khác không?
- File đã upload đúng chưa?
- Session/cookie còn không?
- Có case nào mới chưa test không?
Debug kiểu dev "xịn sò"
In log:
var_dump($data);Hoặc:
echo "Đến bước 1";
Đừng đoán mò
Kim chỉ nam là: để code "nói chuyện" với bạn, hãy tìm lỗi một cách...xịn sò!
Một sự thật ...biết rồi, khổ lắm, nói mãi!
- Code không "tự nhiên" lỗi
- Luôn có lý do
Chỉ là:
Bạn chưa tìm ra thôi
Tổng kết
Luôn tâm niệm "chân lý" đó là: "Chạy hôm qua, lỗi hôm nay" là chuyện bình thường. Không phải bạn dở
Mà là:
- môi trường thay đổi
- dữ liệu thay đổi
- hoặc bạn… quên
Quan trọng là:
Debug có phương pháp
FAQ nhanh
Có phải code bị "phù phép" không?
Không, làm gì có, suy nghĩ bậy bạ gì đâu! Trong sáng một chút đi!
Có nên đập máy không?
Không, máy không có lỗi, thời buổi kinh tế khó khăn, đừng manh động!
Làm sao tránh?
Test nhiều case + quản lý code tốt
Bạn có thể cũng đang gặp: