CodeGym /Các khóa học /Frontend SELF VI /Gỡ lỗi chương trình

Gỡ lỗi chương trình

Frontend SELF VI
Mức độ , Bài học
Có sẵn

9.1 Xuất hiện lỗi (bug)

Gỡ lỗi phần mềm là quá trình tìm và sửa lỗi hoặc bugs trong chương trình. Đây là phần thú vị nhất của việc phát triển phần mềm, giúp đảm bảo chương trình hoạt động đúng.

Lịch sử xuất hiện thuật ngữ "bug"

Thuật ngữ "bug" trong ngữ cảnh của chương trình máy tính lần đầu được sử dụng vào những năm 1940. Mặc dù khái niệm "bugs" đã tồn tại trước khi máy tính xuất hiện, dùng để chỉ các lỗi cơ khí trong các thiết bị khác nhau.

Trường hợp đầu tiên được ghi nhận về việc sử dụng thuật ngữ "bug" trong máy tính là với nhóm làm việc trên máy tính Mark II tại Đại học Harvard vào năm 1947(!). Nhóm này phát hiện rằng một trong những rơle của máy không hoạt động do có một con bướm đêm mắc kẹt trong đó. Họ đã loại bỏ con côn trùng và ghi lại điều này trong nhật ký như "trường hợp thực tế đầu tiên của việc phát hiện côn trùng" (literal bug).

Mặc dù đây không phải là lần đầu tiên sử dụng thuật ngữ "bug" để chỉ lỗi, sự cố này đã trở nên nổi tiếng và góp phần phổ biến thuật ngữ «bug».

bug

Gỡ lỗi chương trình

Gỡ lỗi là quá trình tìm kiếm, chẩn đoán và sửa lỗi trong phần mềm. Quá trình gỡ lỗi bao gồm nhiều giai đoạn:

  1. Phát hiện lỗi: xác định các triệu chứng cho thấy sự tồn tại của lỗi trong chương trình.
  2. Tái tạo lỗi: tạo ra các điều kiện để lỗi xuất hiện lại nhằm hiểu rõ hơn về bản chất của nó.
  3. Chẩn đoán vấn đề: sử dụng các công cụ và phương pháp khác nhau để phân tích mã và tìm nguyên nhân của lỗi.
  4. Sửa lỗi: thực hiện thay đổi trong mã để loại bỏ lỗi.
  5. Kiểm tra: kiểm tra sửa đổi và kiểm tra chương trình để đảm bảo lỗi được khắc phục và không xuất hiện vấn đề mới.

Vậy là lỗi (bug) là thuật ngữ chung chỉ bất kỳ lỗi nào trong chương trình, và gỡ lỗi (de-bug) là quá trình tìm kiếm và loại bỏ các lỗi này.

9.2 Công cụ và phương pháp gỡ lỗi

Nhật ký (Logging)

Thêm nhật ký vào mã chương trình cho phép theo dõi việc thực thi của nó và nhận thông tin về trạng thái của các biến và hoạt động tại các điểm khác nhau trong quá trình thực thi chương trình. Đối với logging trong JavaScript, có một thư viện tuyệt vời - winston.

Ví dụ về sử dụng logging:

JavaScript
    
      const { createLogger, format, transports } = require('winston');

      // Tạo logger với mức độ debug
      const logger = createLogger({  level: 'debug' });

      // Hàm chia
      function divide(a, b) {
        logger.debug(`Chia ${a} cho ${b}`);
        if (b === 0) {
          logger.error("Cố gắng chia cho không!");
          return null;
        }
        return a / b;
      }

      // Ví dụ sử dụng hàm
      const result = divide(10, 2);
      console.log(result); // Sẽ in: 5
    
  

Sử dụng debuggers

Debuggers là các công cụ cho phép các nhà phát triển thực hiện chương trình từng bước một, thiết lập các điểm dừng (breakpoints), kiểm tra giá trị của các biến và thay đổi chúng trong quá trình chạy chương trình.

Các debuggers phổ biến cho JavaScript:

  • Chrome DevTools: debugger tích hợp trong trình duyệt Google Chrome
  • Firefox Developer Tools: debugger tích hợp trong trình duyệt Mozilla Firefox
  • Node.js Debugger: debugger tích hợp cho JavaScript phía Server trong Node.js
  • Visual Studio Code Debugger: debugger tích hợp trong trình biên tập Visual Studio Code

Ví dụ sử dụng debugger trong Node.js:

JavaScript
    
      // Nhập module debug tích hợp sẵn
      const { inspect } = require('util');

      // Ví dụ hàm có lỗi
      function faultyFunction(a, b) {
        debugger; // Đặt điểm dừng
        let result = a / b;
        return result;
      }

      // Gọi hàm có lỗi
      console.log(faultyFunction(10, 0));
    
  

Khi chương trình đạt đến debugger, nó sẽ dừng lại, và bạn có thể sử dụng các lệnh debugging, chẳng hạn như bước tới (step over), bước vào (step into), bước ra (step out), kiểm tra giá trị của biến và nhiều lệnh khác.

Chúng ta sẽ học về debug chương trình với ví dụ debugger tích hợp trong Intellij IDEA (cần phiên bản Ultimate Edition).

9.3 Sử dụng debug

Nói chung, debug bao gồm việc sử dụng tích cực các công cụ và thực hành debugging để phát hiện và loại bỏ lỗi.

Các bước gỡ lỗi:

  1. Thiết lập điểm dừng: thiết lập điểm dừng trong mã để dừng thực thi chương trình tại các điểm bạn quan tâm.
  2. Thực thi từng bước: thực thi chương trình từng bước, quan sát sự thay đổi trong trạng thái của chương trình và giá trị của các biến.
  3. Phân tích biến: kiểm tra giá trị của các biến và biểu thức tại các giai đoạn khác nhau của quá trình thực thi chương trình, để phát hiện dữ liệu không chính xác hoặc lỗi logic.
  4. Sửa lỗi: thực hiện thay đổi trong mã để loại bỏ các lỗi được phát hiện.
  5. Kiểm tra lại: sau khi sửa lỗi, thực hiện kiểm tra lại chương trình để đảm bảo lỗi đã được loại bỏ và không xuất hiện vấn đề mới.

Trông có vẻ đơn giản phải không? Trong bài giảng tiếp theo, chúng ta sẽ đi qua tất cả các bước một cách chi tiết :)

1
Nhiệm vụ
Frontend SELF VI, mức độ, bài học
Đã khóa
Lọc các số
Lọc các số
1
Nhiệm vụ
Frontend SELF VI, mức độ, bài học
Đã khóa
Tổng của mảng
Tổng của mảng
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION