Gỡ lỗi trong lập trình và lời khuyên

Ngày đăng: 09/07/2021   -    Cập nhật: 09/07/2021
Gỡ lỗi (Debugging) là một trong những công việc tồi tệ và đau đớn nhất mà bất kì lập trình viên nào cũng phải trải qua khi thực hiện một dự án. Bạn bắt đầu làm việc 1 cách đầy nhiệt huyết và hăng say. Bạn viết hàng nghìn dòng code trong môi trường làm việc của mình, tất cả đều hoạt động trơn tru nhưng khi bạn thử đưa dự án vào môi trường sản xuất thì nó lại không hoạt động hoặc không hành xử theo cách mà bạn muốn. Rất nhiều lập trình viên đã gặp vấn đề này trong nghề của họ và điều này trở nên cực kì khó chịu khi họ phải dọn dẹp mớ code lộn xộn do người khác tạo ra.


Gỡ lỗi là tìm ra ngọn nguồn của vấn đề thay vì xác định nguyên nhân gây ra lỗi, kiểm định các giả thuyết và thử tất cả các giải pháp có thể để loại bỏ nguyên nhân đằng sau hành vi không đoán trước được của chương trình.

Tất cả các lập trình viên phải dành rất nhiều thời gian để gỡ lỗi cho code, đôi khi phải mất đến hơn 1 tuần hoặc nhiều hơn cả chính thời gian viết code và điều này khiến cho các lập trình viên mất dần hứng thú với công việc. Vậy giải pháp nào để giảm thiểu thời gian gỡ lỗi ? Làm sao để tối thiểu hóa sự xuất liện của lỗi ? Chúng ta hãy cùng thảo luận.
 
 
1. Chạy code của bạn thường xuyên hơn: 

Đây là một trong những lời khuyên quan trọng nhất, đặc biệt là với người bắt đầu học lập trình. Rất nhiều người đã mắc sai lầm này và chạy code sau khi đã viết ra cả một đống code trong file. Hãy tránh mắc phải lỗi này vì bạn sẽ dễ bị lẫn lộn khi kiểm tra lại code và mất nhiều thời gian để tìm các lỗi nhỏ trong code. Khi bạn chạy code mỗi lần viết xong và kiểm tra lại, bạn nhận được phản hồi và biết rằng mình có đang đi đúng hướng hay không.
 
2. Sử dụng in dòng lệnh hợp lý: 

Một trong những công cụ đơn giản và được ưa thích nhất của tất cả các lập trình viên, đặc biệt cho người mới bắt đầu để gỡ lỗi. Phần lớn các vấn đề trong gỡ lỗi đều có thể được giải quyết bằng cách chèn dòng lệnh vào code của bạn. In biến ra và kiểm tra lại bảng lệnh xem giá trị chứa trong đó đã đúng hay chưa. In ra các array, đối tượng và biến bất cứ khi nào bạn cảm thấy muốn kiểm tra lại giá trị của dữ liệu.
 
 
3. Google, Google, và…Google:

 Đúng vậy…không thể phủ nhận rằng Google có giải pháp cho phần lớn các vấn đề mà chúng ta gặp phải và đây là lời khuyên dễ thực hiện nhất. Bạn có thể gặp phải vấn đề khi không hiểu thông báo lỗi của dòng code mà bạn đã viết.

Cách đơn giản nhất là copy dòng thông báo lỗi đó lại và tra google. Một khi bạn tìm kiếm thì khả năng cao là bạn sẽ tìm được câu trả lời trên StackOverflow (cộng đồng lớn nhất của lập trình viên) hay trên các diễn đàn hoặc cộng đồng khác.

 
4. Thử các giải pháp khác nhau: 

Thử các giải pháp khác nhau  khi bạn không hiểu được nguyên nhân và không biết cách sửa lỗi. Nếu vẫn không có hiệu quả thì thử những giải pháp khác. Khả năng là bạn sẽ tìm được giải pháp cho lỗi này nhưng lại gặp một lỗi khác. Trong trường hợp này thì bạn đừng nên hoảng loạn và hãy chấp nhận rằng tất cả các lập trình viên đều phải trải qua giai đoạn này.

Nếu bạn là một lập trình viên junior hoặc người mới bắt đầu học lập trình, bạn nên thử tất cả các giải pháp khác nhau để tìm ra gốc rễ của nguyên nhân trước khi nhờ đến sự giúp đỡ của lập trình viên senior  hay một ai khác. Nếu bạn không thử các giải pháp khác nhau mà trực tiếp nhờ sự trợ giúp thì câu hỏi đầu tiên mà họ sẽ hỏi bạn là: “Bạn đã thử giải pháp nào khác chưa ?“. Vậy nên hãy chắc là bạn không phải quay lại chỗ ngồi để thử một giải pháp khác sau khi đã nhờ trợ giúp.
 
5. Sử dụng chú giải hiệu quả: 

Trong bất kỳ ngôn ngữ nào, chú giải (comment) không chỉ dùng để để lại lời nhắn hay giải thích dòng code. Bạn có thể sử dụng nó một cách thông minh để gỡ lỗi. Nhiều người mới không hiểu cách dùng chú giải để gỡ lỗi một cách hiệu quả.

Bạn có thể tạm thời chú giải trên một dòng code mà không cần phải chạy ngay lúc đó và bạn có thể kiểm tra một dòng code khác để xác định cái nào gây ra lỗi. Việc kiểm tra các dòng code còn lại và xác định lỗi sẽ trở nên dễ dàng hơn. Nhiều người dùng cách xóa dòng code để kiểm tra lỗi, đừng làm vậy mà hãy tập thói quen chú giải trên code.
 
 
 
6. Tái tạo lại lỗi: 

Nhiều lần khi bạn tải website lên trong môi trường sản xuất (Godaddy, Heroku, etc) thì lại không hoạt động. Nó chạy tốt trong môi trường cục bộ của bạn nhưng bạn gặp lỗi trong môi trường sản xuất và nguyên nhân có thể do sự thay đổi biến môi trường hay vài nguyên nhân khác như các khóa API được lưu trực tiếp trong môi trường cục bộ của bạn, bạn làm cùng một công việc đó trên môi trường sản xuất nhưng lại không được phép vì các lý do an ninh.


Để giải quyết vấn đề này, giải pháp tốt nhất là tái tạo lại cùng lỗi đó trong môi trường cục bộ nhưng hãy chắc là bạn không thử code trong môi trường sản xuất bởi có thể sẽ mất thời gian để kết nối đến máy chủ.
 
7. Sử dụng tìm kiếm nhị phân: 

Tìm một lỗi phức tạp trong một file dầy lỗi là rất khó, nhất là khi có hàng nghìn dòng code. Bạn cần phải kiểm tra kĩ càng hơn để tránh gặp phải trường hợp này và cách tốt nhất có thể là áp dụng tìm kiếm nhị phân. Trong quá trình này, bạn cần phải cắt các dòng lệnh thành hai phần. Chú giải một phần và chạy phần còn lại. Với bất cứ phần nào gây ra lỗi, lặp lại với phần đó và tiếp tục cho đến khi bạn không tìm thấy chính xác dòng code gây ra lỗi nữa.
 
8. Dùng các trình gỡ lỗi: 

Có rất nhiều các môi trường phát triển tích hợp và môi trường với trình gỡ lỗi, ví dụ như Visual Studio Code (VSCode), Eclipse giúp bạn có thể viết code và sử sụng nó để tìm lỗi. Phần lớn các ngôn ngữ đều có trình gỡ lỗi với các chức năng khác như giao diện đồ họa, cài đặt đặt điểm dừng (breakpoint). Các công cụ này dừng quá trình thực thi và kiểm tra giá trị của dữ liệu trên từng dòng code một, tất cả những gì bạn phải làm là đặt điểm dừng.

Chuyển vị trí, chuyển dòng xuống, cài đặt điểm dừng, tất cả đều có trong phần lớn các trình gỡ lỗi. GDB (C) hay PDB (Python) công cụ lập trình Chrome (JavaScript) là một vài trình gỡ lỗi rất đáng sử dụng, tuy nhiên phần lớn các lập trình viên và người mới bắt đầu không biết cách sử dụng chúng sao cho hiệu quả. Dành thời gian để học hỏi về những công cụ này sẽ tiết kiệm cho bạn nhiều thời gian và công sức.
 
 
 
9. Kiểm thử tự động: 

Kỹ năng này được sử dụng trong rất nhiều công ty để tìm ra lỗi. Kiểm thử tự động và một vài phép kiểm thử đơn vị khác được tiến hành để kiểm tra xem đầu ra thực tế có khớp với đầu ra mong muốn hay không bằng cách sử dụng công cụ hay viết các kịch bản kiểm thử (test script)  khi thực thi phần mềm hay nhập đầu vào cụ thể.

Nếu bạn đang đặt giả thuyết hay viết giả thuyết kiểm thử đơn vị (kiểm tra chức năng của một hàm đơn hay lớp) và kiểm tra kết quả. Việc viết các trường hợp kiểm thử (test case) sẽ chạy qua code của bạn và kiểm tra hành vi để tìm ra lỗi.
 
 
10. Thảo luận và nhờ sự trợ giúp: 

Nếu bạn đã thử mọi cách để tìm lỗi mà không có kết quả thì đó có thể là do vấn đề phức tạp hơn chẳng hạn như như điều kiện thực hiện (race condition), trong trường hợp này thì hẳn là bạn phải nhờ ai đó giúp đỡ rồi. Giải thích mọi thứ về vấn đề bạn đang gặp phải, giả định của bạn, những giải pháp mà bạn đã thử, cho họ xem dòng code gây ra lỗi.

Hãy ngồi cùng một người khác để họ có thể giải đáp các thắc mắc của bạn. Có thể bạn sẽ tìm ra giải pháp hay tìm ra các trường hợp khác mà bạn chưa tính đến và từ đó giải quyết dược vấn đề.
 
 
Vài lời khuyên ngắn:

 
  • Luôn sửa chữa mọi thứ từng chút một. Bạn có thể tìm ra lỗi khi giải quyết một vấn đề mà không làm ảnh hưởng đến phần code khác. Luôn chọn một vấn đề duy nhất, giải quyết nó và chọn vấn đề tiếp theo dể bạn không bị lẫn lộn hay khiến công việc bạn đang giải quyết trở thành một cơn ác mộng.
 
  • Đọc code một cách cẩn thận vì đôi khi nó có thể là do những lỗi nhỏ như dấu chấm phẩy, dấu phẩy hay các dấu ngoặc. Nếu bạn mới học code thì khả năng cao code của bạn không chính xác như những gì giáo viên đã dạy trên lớp, vậy nên bạn cần phải đọc lại code một cách cẩn thận.
 
  • Nếu bạn sử dụng bất kỳ framework nào, hãy thường xuyên nâng cấp framework. Các công ty thường hay có thay đổi cho các framework của họ nên hãy để ý.
 
  • Nghỉ giải lao và bước ra khỏi bàn làm việc để khởi động lại trí óc nếu bạn bắt đầu mất kiên nhẫn hay kiệt sức. Làm một vài việc khác như nghe nhạc, uống một cốc nước hay để mắt nghỉ ngơi. Bạn có thể tìm ra cách tiếp cận khác để gỡ lỗi hoặc làm tất cả mọi thứ từ đầu sau thời gia nghỉ giải lao có thể giúp bạn giải quyết được vấn đề.

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python

Bình luận Facebook
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!