CodeGym /Blog Java /Ngẫu nhiên /Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đ...
John Squirrels
Mức độ
San Francisco

Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu

Xuất bản trong nhóm
Xin chào tất cả mọi người trong cộng đồng CodeGym! Hôm nay chúng ta hãy nói về gỡ lỗi — nó là gì và cách gỡ lỗi trong IntelliJ IDEA. Bài viết này dành cho những người đã có kiến ​​thức tối thiểu về Java Core. Sẽ không có bất kỳ khuôn khổ hoặc thủ tục phức tạp nào để xuất bản thư viện. Một cuộc dạo chơi nhàn nhã. Vì vậy, hãy làm cho mình thoải mái và hãy bắt đầu! Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 1

Tại sao bạn cần chế độ Gỡ lỗi

Hãy ngay lập tức làm rõ điều gì đó cho chính chúng ta: không có mã nào không có lỗi... Đây chỉ là cách cuộc sống vận hành. Vì vậy, chúng ta không nên gục ngã và bỏ cuộc nếu mã của chúng ta không hoạt động như chúng ta mong đợi. Nhưng chúng ta nên làm gì? Chà, chúng ta có thể đặt System.out.printlncác câu lệnh ở khắp mọi nơi và sau đó lướt qua đầu ra của bàn điều khiển với hy vọng tìm ra lỗi. Điều đó nói rằng, bạn có thể (và mọi người làm) gỡ lỗi bằng cách ghi nhật ký cẩn thận. Nhưng nếu bạn có thể chạy mã của mình trên máy cục bộ, thì tốt hơn là sử dụng chế độ Gỡ lỗi . Tôi muốn lưu ý ngay rằng trong bài viết này, chúng ta sẽ xem xét việc gỡ lỗi một dự án bằng IntelliJ IDEA.

Chế độ gỡ lỗi là gì?

Chế độ gỡ lỗi là để gỡ lỗi (kiểm tra) mã đang chạy. Nó giúp bạn có thể dừng thực hiện tại những nơi được chỉ định và xem mọi thứ đang tiến triển như thế nào. Nó cho phép bạn hiểu trạng thái của chương trình tại một vị trí cụ thể trong mã. Nó giống như việc có thể dừng đồng hồ và nhìn mọi thứ từ một phía. Mát mẻ, phải không? Mục tiêu của chúng tôi là học cách gỡ lỗi ứng dụng một cách nhanh chóng và dễ dàng bằng môi trường phát triển IntelliJ IDEA được yêu thích của chúng tôi.

Những gì bạn cần để bắt đầu gỡ lỗi

Đây là một số lời khuyên miễn phí: trong khi đọc bài viết này, hãy làm mọi thứ sẽ được mô tả ở đây — bạn có mọi thứ bạn cần để làm theo. Những gì bạn cần:
  1. IntelliJ IDEA phiên bản 2019.3.1 trở lên. Trong trường hợp ai đó không có cái này, đây là liên kết nơi bạn có thể tải xuống . Tải xuống Phiên bản cộng đồng — đó là phiên bản mà tôi sẽ sử dụng.
  2. Sao chép dự án GitHub này và nhập nó qua IDEA.
Mở IDEA: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 2Chọn dự án trình bày gỡ lỗi và nhấn OK . Sau đó, bạn sẽ thấy cửa sổ sau: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 3Giữ nguyên các tùy chọn đã chọn: Nhập dự án từ các nguồn bên ngoàiMaven . Nhấp vào Kết thúc . Bây giờ chúng tôi đã nhập dự án, chúng tôi có thể mô tả phần còn lại của quy trình bằng một ví dụ sống động.

Chỉ là một chút lý thuyết ... Tôi hứa :D

Để bắt đầu gỡ lỗi dù chỉ một chút, bạn cần hiểu điểm ngắt là gì và làm quen với một vài phím nóng. Điểm dừng là một điểm đánh dấu đặc biệt cho biết nơi bạn muốn dừng thực thi ứng dụng, có thể dựa trên trạng thái ứng dụng. Bạn có thể đặt điểm ngắt bằng cách nhấp chuột trái vào bảng điều khiển bên trái hoặc bằng cách nhấp vào vị trí mã và nhấn Ctrl+F8 . Hãy xem xét ba loại điểm dừng: điểm ngắt dòng, điểm theo dõi trường và điểm ngắt phương thức. Cái này nó thì trông như thế nào:
  • Trên một dòng:

    Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 4

    Nếu một câu lệnh có biểu thức lambda, thì IDEA sẽ nhắc bạn chọn đặt điểm ngắt trên toàn bộ câu lệnh hay cụ thể trên biểu thức lambda:

    Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 5
  • Trên một phương pháp:

    Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 6
  • Trên một lớp học:

    Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 7
Điểm dừng có thể được gỡ bỏ bằng cách làm theo các bước tương tự được sử dụng để thêm chúng. Có những tình huống khi bạn muốn tắt (tắt) chúng. Để thực hiện việc này, hãy tìm Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 8biểu tượng trong phần Gỡ lỗi. Điều này sẽ tắt tiếng tất cả các điểm dừng. Để xem breakpoint nào đã được thiết lập, bạn có thể vào mục Debug góc dưới bên trái tìm biểu tượng Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 9hoặc nhấn tổ hợp phím Ctrl+Shift+F8 : Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 10Di chuyển đến danh sách breakpoint ta sẽ thấy như sau: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 11Có 2 breakpoint đây:
  • Bee.java:24 — trong lớp Bee ở dòng 24
  • Main.java:14 — trong Main class ở dòng 14
Xin lưu ý rằng các điểm ngắt này sẽ không được đặt tự động nếu bạn đã sao chép dự án: bạn sẽ cần tự đặt chúng! Ngoài ra còn có phần Điểm dừng ngoại lệ Java . Nó rất hữu ích. Tại đây, bạn có thể thêm một điểm ngắt ẩn để chương trình dừng lại trước khi đưa ra bất kỳ ngoại lệ hoặc một ngoại lệ cụ thể nào. Chúng tôi sẽ thêm một điểm ngắt ẩn cho RuntimeException. Điều này rất dễ làm. Tìm biểu tượng "+" ở góc trên bên trái. Nhấp vào nó và chọn Java Exception Breakpoints : Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 12Trong cửa sổ xuất hiện, hãy viết tên của ngoại lệ mà bạn muốn thêm, chọn từ danh sách và nhấp vào OK : Điều Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 13đó kết thúc phần sơ lược của chúng ta về cách thiết lập mọi thứ, vì vậy bây giờ chúng ta' Tôi sẽ chuyển sang một số thực hành.

Chúng ta hãy làm điều này được gọi là gỡ lỗi!

Tôi xuất thân từ một gia đình nuôi ong lâu đời, vì vậy dự án mà tôi tạo ra để minh họa việc gỡ lỗi mô tả mô hình quy trình ong lấy mật hoa, chế biến mật hoa thành mật ong và sau đó lấy mật ong từ tổ ong. Theo tệp tài liệu README, có thể tìm thấy trong thư mục gốc của dự án, hành vi dự kiến ​​của tất cả các loài hoa mà từ đó mật hoa được thu thập là lượng mật ong thu được (có dạng gấp đôi ) bằng một nửa mật hoa thu thập được. Dự án có các lớp sau:
  • Bee — một con ong thợ bình thường
  • BeeQueen - con ong chúa
  • BeeHive - tổ ong
  • HoneyPlant — cây mật ong (nguồn mật hoa) từ đó mật hoa được thu thập
  • Chính - đây là nơi chúng tôi tìm thấy public static void main(), phương thức bắt đầu thực thi.
Nếu chúng ta chạy main()phương thức này, thì chúng ta thấy rằng chương trình của chúng ta không những không tính được lượng mật ong mà còn đưa ra một ngoại lệ... Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 14Chúng ta cần điều tra và xác định vấn đề là gì. Từ ngăn xếp theo dõi ở góc dưới bên phải, chúng ta có thể thấy rằng trong RuntimeException đã bị ném vào HoneyPlant.java:20: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 15Đó chính là điều chúng ta đã nói ở trên. Hãy theo dõi RuntimeException này bằng cách chạy main()phương thức trong chế độ gỡ lỗi. Để thực hiện việc này, hãy nhấp vào mũi tên hình tam giác màu xanh lá cây trong IntelliJ IDEA bên cạnh phương main()thức. Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 16Kết quả là, chúng ta sẽ làm cho chương trình bị dừng tại thời điểm ngay trước khi ném ngoại lệ và chúng ta sẽ thấy biểu tượng này: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 17Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 18Để có được tất cả thông tin có sẵn, chúng ta cần tìm trong phần Gỡ lỗi. Nó có một biếnngăn hiển thị tất cả các biến có sẵn trong phần này của ứng dụng:
  • mật hoa = 1,0;
  • công suất mật hoa = -1,0.
Loại bỏ ngoại lệ là điều hợp lý, bởi vì cây mật ong không thể có lượng mật hoa âm. Nhưng tại sao điều này lại xảy ra? Rốt cuộc, trong các dòng 15-17, chúng tôi kiểm tra xem nguồn cung cấp mật hoa có cạn kiệt hay không và trả về 0 nếu đó là:

	if (nectar == 0) {
   	     return 0;
}
Nhưng rắc rối là chúng ta đang kiểm tra sai biến. Đây là một lỗi trong mã. Thay vì kiểm tra lượng mật hoa có sẵn trong bông hoa (được lưu trữ trong biến nectarCapacity ), chương trình sẽ kiểm tra giá trị của tham số mật hoa của phương thức , là lượng mật hoa mà chúng ta muốn lấy từ bông hoa. Đây rồi! Lỗi đầu tiên của chúng tôi! Sau khi sửa lỗi này, chúng tôi nhận được mã sau đây:

	if (nectarCapacity == 0) {
   	     return 0;
}
Bây giờ hãy chạy main()phương thức này theo cách thông thường (Run 'Main.main()'). Không có ngoại lệ nào được ném ra và chương trình hoạt động: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 19Ứng dụng chạy đến khi hoàn thành và đưa ra câu trả lời sau:

"33.0 honey was produced by 7 bees from 2 honey plants"
Bây giờ mọi thứ sẽ ổn, nhưng câu trả lời này không chính xác... Theo tài liệu tệp README, mật hoa được chuyển đổi thành mật ong theo tỷ lệ 2 trên 1:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Phương pháp chính rõ ràng có hai cây mật ong với 30 và 40 đơn vị mật hoa tương ứng. Vì vậy, cuối cùng chúng ta nên có 35 đơn vị mật ong. Nhưng chương trình đang nói với chúng tôi rằng chúng tôi nhận được 33. Hai đơn vị còn lại đã đi đâu? Hãy cùng tìm hiểu! Để thực hiện việc này, hãy đặt điểm ngắt trong Main.main()phương thức trên dòng 28, nơi beeHive.populateHoney()được gọi và chạy main()phương thức trong chế độ Gỡ lỗi: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 20Chúng tôi sẽ xem xét điểm này chi tiết hơn. Chương trình đã dừng thực thi trước khi thực hiện dòng 28. Ở phần bên dưới, chúng ta thấy phần Gỡ lỗi, phần này hiển thị tất cả thông tin có sẵn về ứng dụng đang chạy. Như đã đề cập, khung Biến chứa tất cả các biến và đối tượng có sẵn từ phần này của ứng dụng. Khung Khung hiển thị các bước mà ứng dụng đang trải qua — bạn có thể xem các bước (khung) trước đó và xem tất cả dữ liệu cục bộ. Để tiếp tục chạy chương trình, bạn có thể nhấn F9 hoặc biểu tượng màu xanh lá cây, như hình bên dưới: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 21Để dừng chương trình, hãy nhấp vào ô vuông màu đỏ: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 22Để khởi động lại ứng dụng ở chế độ gỡ lỗi, hãy nhấp vào mũi tên: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 23Hơn nữa, bạn có thể tiếp tục qua ứng dụng từng bước bằng hai phím:
  • F8 — Bước qua mã mà không bước vào các phương pháp;
  • F7 - Bước qua mã và bước vào phương pháp.
Trong trường hợp của chúng tôi, chúng tôi cần nhấn F7 để bước vào beeHive.populateHoney()phương thức. Bước vào nó, chúng tôi nhận được: Gỡ lỗi trong IntelliJ IDEA: hướng dẫn cho người mới bắt đầu - 24Bây giờ chúng tôi sẽ sử dụng F8 để thực hiện phương pháp này và mô tả những gì xảy ra trong đó:
  • Dòng 25 — Stream API được sử dụng để thu thập mật hoa từ tất cả các con ong
  • Dòng 26 — Mật ong mới tạo được thêm vào mật ong hiện có;
  • Dòng 27 - 2 đơn vị mật ong được phân bổ cho nữ hoàng
  • Dòng 28 — Hai đơn vị này được loại bỏ khỏi tổng lượng mật ong
  • Dòng 29 — Nữ hoàng ăn mật này.
Vì vậy, đó là nơi hai đơn vị mất tích đã đi! Tiếng hoan hô! Sau khi nói chuyện với một nhà phân tích kinh doanh, chúng tôi kết luận rằng tệp README tài liệu có lỗi và cần được cập nhật. Hãy cập nhật tệp README:

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Đã được thực hiện. Chúng tôi đã sửa tất cả các lỗi chúng tôi tìm thấy. Chúng ta có thể bình tĩnh tiếp tục với vẻ ngoài tự mãn, nhâm nhi chút cà phê và đọc các bài viết trên Stack Overflow CodeGym :)

Hãy tóm tắt

Trong bài viết này, chúng tôi đã học được:
  • công việc của mọi người đều có lỗi và gỡ lỗi là một cách tuyệt vời để khắc phục chúng
  • breakpoint là gì và có những loại breakpoint nào
  • cách đặt điểm ngắt ngoại lệ
  • làm thế nào để bước qua mã trong chế độ gỡ lỗi

Bài viết để đọc

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION