1. Lỗi

Các lập trình viên có tiếng lóng của riêng họ, mặc dù nhiều người coi đó là biệt ngữ kỹ thuật. Trong mọi trường hợp, bạn không thể tránh khỏi việc tìm hiểu nó. Bạn cần đi sâu vào chi tiết. Vì vậy, hãy đi sâu vào.

Một trong những từ đầu tiên bạn sẽ làm quen là " bug ", tức là côn trùng . Trong bối cảnh phát triển phần mềm, từ này có nghĩa là một lỗi trong chương trình, một trường hợp chương trình làm điều gì đó sai hoặc không hoàn toàn đúng. Hoặc đơn giản là làm việc kỳ lạ.

Nhưng nếu một lập trình viên cho rằng chương trình, bất chấp hành vi kỳ quặc của nó, đang thực hiện chính xác những gì nó phải làm, thì người đó thường tuyên bố đại loại như "đó không phải là lỗi, đó là một tính năng". Mà đã tạo ra một loạt các meme internet.

Nói chung, có thể có bất kỳ lý do nào dẫn đến lỗi phần mềm: mọi thứ từ lỗi logic của chương trình, lỗi chính tả và kiến ​​trúc chương trình không chính xác, cho đến các vấn đề trong trình biên dịch. Trong mọi trường hợp, các lập trình viên cần sửa cả lỗi thực và bất kỳ "thiếu sót" nào khác trong chương trình của họ.

Lịch sử của từ "lỗi"

Phiên bản phổ biến nhất về nguồn gốc của từ "lỗi" là một huyền thoại.

Vào tháng 9 năm 1945, các nhà khoa học tại Đại học Harvard đang thử nghiệm một trong những chiếc máy tính đầu tiên, Mark II. Máy tính không hoạt động bình thường, và trong quá trình kiểm tra tất cả các bo mạch, họ đã tìm thấy một con sâu bướm bị mắc kẹt giữa các tiếp điểm của rơle điện cơ.

Con côn trùng được chiết xuất được ghi vào nhật ký kỹ thuật, kèm theo dòng chữ này: "Trường hợp thực tế đầu tiên về con bọ được tìm thấy."

Câu chuyện hài hước này được cho là khởi đầu cho việc sử dụng từ " bug " để chỉ lỗi, và từ " debug " đã trở thành đồng nghĩa với việc loại bỏ bug.


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

Để sửa lỗi trong chương trình của họ, các lập trình viên sử dụng các chương trình đặc biệt gọi là trình sửa lỗi . Một số chương trình này thậm chí còn biết cách gỡ lỗi mã máy.

Lập trình viên Java sử dụng IDE để gỡ lỗi chương trình của họ. Chẳng hạn như IntelliJ IDEA, Eclipse và NetBeans. IntelliJ IDEA cho đến nay là IDE mạnh nhất, vì vậy chúng ta sẽ xem qua quy trình gỡ lỗi bằng cách sử dụng nó làm ví dụ.

IntelliJ IDEA có thể chạy chương trình của bạn ở hai chế độ:

chế độ thực hiện Biểu tượng thanh công cụ phím nóng
thực hiện bình thường Shift+F10
Bắt đầu ở chế độ gỡ lỗi Shift+F9

Bạn đã quen với cách thực hiện bình thường: chương trình bắt đầu, chạy và thoát. Nhưng chế độ gỡ lỗi có rất nhiều điều bất ngờ dành cho bạn.

Chế độ kiểm tra sửa lỗi

Chế độ gỡ lỗi cho phép bạn đi từng bước qua toàn bộ chương trình của mình. Hay chính xác hơn, nó cho phép bạn di chuyển từng dòng một . Hơn nữa, bạn có thể quan sát giá trị của các biến ở mỗi bước của chương trình (sau mỗi dòng mã được thực thi). Và bạn thậm chí có thể thay đổi giá trị của chúng!

Để đạt được một sự hiểu biết tối thiểu về gỡ lỗi một chương trình, bạn cần học ba điều:

  • Điểm dừng
  • Thực hiện từng bước
  • Kiểm tra giá trị của các biến

3. Điểm dừng

IDE cho phép bạn đặt các điểm đánh dấu đặc biệt được gọi là điểm dừng trong mã của bạn. Mỗi khi một chương trình đang chạy trong chế độ gỡ lỗi đạt đến một dòng được đánh dấu bằng điểm dừng , quá trình thực thi sẽ tạm dừng.

Để đặt điểm dừng trên một dòng cụ thể, bạn chỉ cần nhấp vào bên trái của dòng trong IDEA. Ví dụ:

Điểm ngắt IntelliJ IDEA

Dòng này sẽ được đánh dấu bằng một điểm dừng và IntelliJ IDEA sẽ đánh dấu nó bằng màu đỏ:

được đánh dấu bằng một điểm dừng

Nhấp chuột lần thứ hai vào khung bên trái của mã sẽ loại bỏ điểm ngắt .

Điểm dừng cũng có thể được đặt trên dòng hiện tại chỉ bằng cách sử dụng tổ hợp phím nóng Ctrl+ F8. Nhấn Ctrl+ F8lần nữa trên một dòng đã có điểm ngắt sẽ xóa nó.


4. Khởi động chương trình ở chế độ gỡ lỗi

Nếu bạn có ít nhất một điểm dừng trong chương trình của mình, bạn có thể chạy chương trình ở chế độ gỡ lỗi bằng cách nhấn Shift+ F9hoặc nhấp vào "biểu tượng lỗi".

Sau khi bắt đầu ở chế độ gỡ lỗi, chương trình sẽ chạy như bình thường. Nhưng ngay khi đến dòng mã được đánh dấu bằng điểm dừng , nó sẽ tạm dừng. Ví dụ:

Khởi động chương trình ở chế độ gỡ lỗi

Ở nửa trên của ảnh chụp màn hình, bạn sẽ thấy mã chương trình có hai điểm dừng. Quá trình thực thi của chương trình dừng lại ở dòng 5, được đánh dấu bằng một dòng màu xanh lam. Dòng 5 chưa được thực hiện: chưa có gì được xuất ra bàn điều khiển.

Ở nửa dưới của màn hình, bạn sẽ thấy các ngăn gỡ lỗi: ngăn Trình gỡ lỗi , ngăn Bảng điều khiển  và một tập hợp các nút cho chế độ gỡ lỗi.

Bạn có thể hủy tạm dừng chương trình của mình (tức là tiếp tục thực hiện) bằng cách nhấn nút Tiếp tục chương trình ở ngăn dưới cùng bên trái (hoặc nhấn F9).

Khởi động chương trình ở chế độ gỡ lỗi 3

Nếu bạn nhấn nút này (hoặc F9), chương trình sẽ tiếp tục chạy cho đến khi gặp điểm ngắt tiếp theo hoặc kết thúc. Đây là những gì chúng ta thấy sau khi nhấp vào nút:

Khởi động chương trình ở chế độ gỡ lỗi 4

Chương trình dừng lại ở điểm dừng thứ hai và các từ Helloandcó thể được nhìn thấy trong bảng điều khiển. Đây là dấu hiệu cho thấy chúng ta chỉ thực hiện hai trong số ba dòng hiển thị đầu ra trên màn hình.


5. Thực hiện từng bước

Nếu chương trình của bạn đang chạy ở chế độ gỡ lỗi, bạn cũng có thể thực hiện từng bước: một bướcmột dòng . Có hai phím nóng để thực hiện từng bước: F7F8: mỗi phím làm cho dòng mã hiện tại được thực thi. Nhưng trước tiên, bạn vẫn phải dừng chương trình của mình bằng một điểm dừng .

Nếu bạn muốn thực thi từng dòng chương trình của mình, bạn cần đặt điểm dừng ở đầu phương main()thức và chạy nó ở chế độ gỡ lỗi.

Khi chương trình dừng lại, bạn có thể bắt đầu thực hiện từng dòng một. Một lần nhấn F8phím sẽ thực hiện một dòng.

Đây là giao diện của chương trình sau khi dừng và chúng tôi nhấn phím F8một lần:

Khởi động chương trình ở chế độ gỡ lỗi.  Thực hiện từng bước

Dòng đầu tiên của phương thức chính đã được thực thi và dòng hiện tại là dòng thứ hai. Bạn cũng có thể thấy ở cuối ảnh chụp màn hình rằng từ đó Hellođã được hiển thị trên màn hình.


6. Thực hiện từng bước với các phương pháp bước vào

Nếu bạn đã viết các phương thức của riêng mình trong chương trình và bạn muốn thực thi bên trong các phương thức của mình ở chế độ gỡ lỗi, tức là bạn muốn "bước vào phương thức", thì bạn cần nhấn chứ không F7phải F8.

Giả sử bạn xem qua chương trình và hiện đang dừng ở dòng 4. Nếu bạn nhấn F8, IDEA sẽ chỉ thực hiện dòng thứ tư và chuyển sang dòng thứ năm.

Thực hiện từng bước với bước vào phương pháp 2

Nhưng nếu bạn nhấn F7, IDEA sẽ bước vào main2()phương thức:

Thực hiện từng bước với bước vào phương pháp 3

Nó rất đơn giản. Nếu bạn không thực sự quan tâm điều gì xảy ra bên trong một phương thức hoặc cách thức, thì bạn nhấn F8. Nếu nó quan trọng, thì hãy nhấn F7và bước qua tất cả các mã của nó.