Đó là một ngày phán xét. Tôi đã làm việc trên một tính năng trong tháng trước. Chiều hôm đó, nhóm của tôi phải trình bày công việc với CEO
Tôi cảm thấy khá tự tin. Ngày hôm trước, một người kiểm tra đã báo cáo một số lỗi nhỏ — một số điều rõ ràng cần khắc phục trong buổi cà phê sáng của tôi
Một nhiệm vụ là hiển thị logo của các công ty trong một bảng. Đủ công bằng. Nhưng nó thật kỳ lạ. Tôi cảm thấy như tôi đã sửa nó sớm hơn. Tôi thậm chí còn tự hỏi làm thế nào tôi có thể làm rối tung logic đơn giản
Chà, người duy nhất không phạm sai lầm là người không làm gì cả. Tôi đã xóa một dấu chấm than trong mã và tin rằng công việc đã hoàn thành
nó không phải là
Một tiếng rưỡi sau, tôi đã chạm vào 14 tệp và thay đổi 250 dòng mã. Tôi đã cầu nguyện cho bản sửa lỗi hoạt động
Gỡ lỗi là khó
Khi chúng tôi bắt đầu tạo ra các chương trình máy tính, chúng tôi ngay lập tức nhận thấy rằng chúng tôi luôn làm nó rối tung lên. Để làm cho nó tồi tệ hơn, thật không dễ dàng để sửa chữa những sai lầm của chúng tôi. Như Brian Kernighan đã nói
“Gỡ lỗi khó gấp đôi so với viết mã ngay từ đầu. Do đó, nếu bạn viết mã một cách khéo léo nhất có thể, thì theo định nghĩa, bạn không đủ thông minh để gỡ lỗi mã đó. ”
Vậy tại sao việc gỡ lỗi lại khó đến vậy?
Ngay cả những ứng dụng đơn giản nhất cũng được xây dựng trên nền tảng mã khổng lồ. Các nhà phát triển hiện đại nhận được nhiều công cụ miễn phí — những công cụ mà họ không thực sự hiểu. Chúng tôi có thể sử dụng chúng, nhưng chúng tôi không biết chúng hoạt động như thế nào
Sự phức tạp khiến chúng tôi gặp khó khăn, đặc biệt là khi chúng tôi nhận được thông báo lỗi cẩu thả hoặc dấu vết ngăn xếp phức tạp cần gỡ rối. Thông thường, khoảng cách trong mã giữa lỗi và triệu chứng của nó là rất lớn
Hệ thống của chúng tôi rất phức tạp, nhưng thông tin đầu vào của chúng tôi cũng có thể gây rắc rối. Bạn sẽ thường xuyên gặp phải tình huống người dùng cuối gặp một số lỗi nhưng bạn không thể nhìn thấy lỗi đó trên máy của mình. Lỗi có thể liên quan đến cấu hình hoặc phụ thuộc vào phiên bản trình duyệt hoặc chuỗi sự kiện. Một số lỗi hoạt động theo nhóm và làm mờ hình ảnh nhiều hơn
Ngoài ra, một lỗi có thể tạo ra nhiều lỗi khác nhau. Để làm cho vấn đề trở nên tồi tệ hơn, việc sửa chữa một sai lầm thường có thể tạo ra những sai lầm mới. Nó thường chỉ ra việc thiếu các bài kiểm tra hoặc các bản sửa lỗi được triển khai cẩu thả mà không hiểu mã
Ảnh của cottonbro trên Pexels. Cách gỡ lỗi tốt hơn
Tất cả chúng ta đều thừa nhận rằng việc gỡ lỗi là khó khăn, nhưng làm thế nào chúng ta có thể làm cho nó dễ dàng hơn?
Tìm lỗi
Để học gỡ lỗi, chúng ta cần hiểu một điều. Nó không phải là việc thêm hoặc xóa mã hoặc ghi nhật ký mọi thứ. Phần thiết yếu của việc gỡ lỗi không liên quan gì đến việc gõ. Nó có mọi thứ để làm với suy nghĩ
Trước khi bắt đầu gỡ lỗi, bạn cần suy nghĩ và phân tích mã của mình. Bạn nghĩ gì đã đi sai? . thậm chí có thể một vài
Bước tiếp theo là gì?
Kiểm tra các giả thuyết của bạn bắt đầu từ giả thuyết có thể xảy ra nhất. Thử nghiệm có thể bao gồm việc thay đổi đầu vào [e. g. kích thước hoặc định dạng tệp khác khi tải lên], sử dụng một trình duyệt khác hoặc nhận xét các phần mã mà bạn cho là OK. Mục tiêu là thu hẹp lỗi càng nhiều càng tốt
Bây giờ bạn đã khá tự tin về vị trí của lỗi. Nếu không, có một kỹ thuật bổ sung có thể giúp bạn. Phân chia và chinh phục
Tôi đã viết một bài báo về kỹ thuật đó, nhưng bản chất của nó rất đơn giản. Bạn cắt đôi cơ sở mã của mình và sử dụng nhật ký để kiểm tra xem lỗi nằm ở nửa đầu hay nửa sau. Bây giờ hãy cắt đôi phần lỗi một lần nữa. Lặp lại quy trình cho đến khi bạn thu hẹp lỗi chỉ còn một vài dòng mã
Sửa lỗi
Bạn đã tìm thấy lỗi. Bây giờ là lúc để sửa chữa nó. Chống lại sự thôi thúc để có được mã hóa ngay lập tức. Như mọi khi với việc gỡ lỗi, suy nghĩ quan trọng hơn thực hiện
Bạn có hiểu đầu vào và đầu ra cũng như quy trình của ứng dụng không?
Đôi khi có thể khắc phục nhanh, nhưng có thể bạn không hiểu hết chuyện gì đang xảy ra. Tìm hiểu tất cả các trường hợp code bị lỗi. Hãy thử kiểm tra nó với các đầu vào ngẫu nhiên. Nó có hoạt động như mong đợi không?
Sau khi khắc phục, hãy thử lại tất cả các trường hợp [cả thành công và không thành công]. Bạn có nhận được nó bây giờ? . Tinker xung quanh cho đến khi bạn hoàn toàn hiểu những gì đang xảy ra và khi nào. Nếu không, bạn sẽ lại vấp phải lỗi đó — có thể ở một nơi khác — và bạn vẫn không biết chuyện gì đang xảy ra
Sự kết luận
Bạn có thể tự hỏi, "Bản sửa lỗi có hoạt động không?" . Tôi quản lý để làm cho nó hoạt động và bài thuyết trình diễn ra tốt đẹp
Một sự hiểu lầm về đầu vào gây ra lỗi của tôi. Tôi đã làm việc trên các đối tượng lớn được trả về từ cơ sở dữ liệu và nhận thức sai về một số thuộc tính. Lỗi này có vẻ giống như một lỗi đơn giản trong logic boolean, nhưng đó là một sự hiểu lầm lớn về hệ thống
Vụ việc nhắc nhở tôi không nên coi thường bất cứ điều gì. Lập trình khó. Gỡ lỗi là khó. Đôi khi những lỗi tưởng chừng đơn giản lại có thể giúp bạn phát hiện ra một lỗ hổng lớn trong mô hình tinh thần của mình. Học từ nó