Xin chào mọi người, cộng đồng JavaRush. Hôm nay chúng ta sẽ nói về việc gỡ lỗi: nó là gì và cách gỡ lỗi trong Intellij IDEA. Bài viết dành cho những người đã có kiến thức tối thiểu về Java Core. Sẽ không có khuôn khổ hoặc quy trình phức tạp nào để xuất bản thư viện. Dễ dàng đi bộ. Vì vậy, hãy thoải mái và bắt đầu!
tài liệu của tệp README, nằm trong thư mục gốc của dự án, chúng tôi đọc được: hành vi dự kiến - từ tất cả các loài hoa mà mật hoa được thu thập (dưới dạng giá trị kép ), một lượng mật ong sẽ được thu thập bằng một nửa mật hoa được thu thập. Dự án có các lớp sau:
tài liệu tệp README có viết rằng mật hoa biến thành mật ong theo tỷ lệ 2 trên 1:
tài liệu có lỗi và cần được cập nhật. Hãy cập nhật tệp README:
trung tâm JavaRush một cách thông minh :)
Tại sao bạn cần gỡ lỗi?
Hãy làm rõ ngay: không có mã nào không có lỗi... Đây là cách cuộc sống vận hành. Vì vậy, chúng ta không nên ngay lập tức trở nên khập khiễng và từ bỏ mọi thứ nếu mã không hoạt động như chúng ta mong đợi. Nhưng phải làm gì? Tất nhiên, bạn có thể hướng dẫnSystem.out.println
bất cứ khi nào có thể và sau đó xem qua đầu ra trong thiết bị đầu cuối với hy vọng rằng bạn có thể tìm thấy lỗi. Tuy nhiên, điều đó vẫn có thể xảy ra... và họ thực hiện điều đó và thực hiện điều đó một cách cẩn thận bằng cách ghi nhật ký (bạn có thể đọc về điều đó tại đây ). Nhưng nếu có thể chạy mã trên máy cục bộ thì nên sử dụng Debug . Tôi muốn lưu ý ngay rằng trong bài viết này, chúng tôi sẽ xem xét việc gỡ lỗi một dự án bên trong Intellij IDEA. Nếu bạn muốn đọc về gỡ lỗi từ xa, đây là bài viết từ tài nguyên của chúng tôi .
Gỡ lỗi là gì
Gỡ lỗi là quá trình gỡ lỗi (kiểm tra) mã, trong quá trình thực thi mã, bạn có thể dừng lại ở một nơi được chỉ định và xem tiến trình thực thi. Hiểu trạng thái của chương trình ở một nơi nhất định. Nó giống hệt như việc bạn có thể dừng cuộc sống và nhìn mọi thứ từ bên ngoài. Thật tuyệt 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 yêu thích của chúng tôi, Intellij IDEA.Những gì bạn cần để bắt đầu gỡ lỗi
Tôi đưa ra lời khuyên miễn phí: trong khi bạn đang đọc bài viết, hãy làm mọi thứ sẽ được mô tả ở đây, may mắn thay, có mọi thứ cho việc này. Bạn cần gì:- Môi trường phát triển Intellij IDEA phiên bản 2019.3.1 trở lên. Trong trường hợp ai đó không có nó, đây là liên kết để bạn có thể tải xuống. Tải xuống Phiên bản cộng đồng vì đó là phiên bản tôi sẽ sử dụng.
- Sao chép dự án từ GitHub và nhập nó qua IDEA.
Một chút lý thuyết... hứa đấy :D
Để bắt đầu gỡ lỗi một chút, bạn cần hiểu breakPoint là gì và hiểu một số phím nóng mà bạn cần để bắt đầu. BreakPoint là một điểm đánh dấu đặc biệt hiển thị vị trí hoặc trạng thái mà ứng dụng sẽ dừng lại. Bạn có thể đặt điểm dừng bằng cách nhấp chuột trái vào thanh bên trái hoặc bằng cách nhấp vào vị trí mã và nhấn Ctrl + F8 . Điểm ngắt có ba loại: dấu dòng, dấu biến và dấu phương thức. Nó trông như thế này:-
Mỗi dòng:
nếu có biểu thức lambda trong biểu thức thì IDEA sẽ đưa ra cho bạn một lựa chọn - đặt biểu thức trên toàn bộ dòng hoặc cụ thể là trong biểu thức lambda:
-
Mỗi phương pháp:
-
Mỗi lớp
- Bee.java:24 - trong lớp Bee trên dòng 24
- Main.java:14 - trong lớp Main ở dòng 14
Đi nào, hãy đột nhập vào thế giới gỡ lỗi hoang dã
Vì tôi là một người nuôi ong cha truyền con nối nên đối với phần trình bày gỡ lỗi, tôi đã tạo một dự án mô tả quá trình ong lấy mật hoa, chế biến mật hoa thành mật ong và lấy mật từ tổ ong. Dựa trên- Bee - một con ong thợ bình thường;
- BeeQueen - ong chúa;
- BeeHive - tổ ong;
- HoneyPlant - cây mật ong từ đó lấy mật ong;
- Chính - nơi
public static void main()
đặt phương thức bắt đầu dự án.
main()
thì không những không đếm được lượng mật ong mà còn xuất hiện lỗi... Bạn cần xem ở đó có sai sót gì. Từ dấu vết ngăn xếp ở góc dưới bên phải, chúng ta có thể thấy rằng trong HoneyPlant.java:20
, một RuntimeException được đưa ra: Đây chính xác là trường hợp của chúng ta: có một RuntimeException, hãy thêm tìm kiếm cho một ngoại lệ như vậy, như được mô tả ở trên và chạy main()
phương thức đó trong chế độ kiểm tra sửa lỗi. Để thực hiện việc này, hãy nhấp vào mũi tên tam giác màu xanh lục trong Intellij IDEA trước phương thức main()
: và chúng tôi sẽ nhận được chương trình đã dừng vào lúc này trước khi ngoại lệ với biểu tượng này được kích hoạt . Để có được thông tin đầy đủ, bạn cần xem trong phần Gỡ lỗi. Nó có Variables , 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;
- mật hoaCapacity = -1,0.
if ( nectar == 0 ) {
return 0;
}
Nhưng điều đáng chú ý là nó đang kiểm tra sai biến... và đây là lỗi trong mã. Thay vì kiểm tra giá trị của mật hoa trong bông hoa nằm trong biến honeyCapacity , chương trình sẽ kiểm tra giá trị của mật hoa đi vào phương thức và là lượng mà chúng muốn lấy từ mật hoa. Đây rồi, lỗi đầu tiên! Do đó, chúng tôi đặt nó một cách chính xác và nhận được biểu thức:
if ( nectarCapacity == 0) {
return 0;
}
Tiếp theo, chúng ta chạy main()
phương thức ở chế độ bình thường (Run `Main.main()`)
và không còn lỗi nữa, chương trình đã hoạt động: Ứng dụng hoạt động và đưa ra câu trả lời: “33.0 mật ong được tạo ra bởi 7 con ong từ 2 cây mật ong” Mọi thứ sẽ ổn, nhưng câu trả lời là sai rồi... Tất cả là do trong ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
Từ phương pháp chính, có thể thấy rằng có hai cây mật ong, lần lượt là 30 và 40 đơn vị mật hoa, vì vậy cuối cùng bạn sẽ nhận được 35 đơn vị mật ong. Và anh ấy viết rằng 33. Hai đơn vị còn lại đã đi đâu?... Bây giờ chúng ta sẽ tìm hiểu! Để làm điều này, chúng ta cần đặt một điểm ngắt trong phương thức Main.main()
ở dòng số 28, nơi nó được thực thi beeHive.populateHoney()
và chạy main
phương thức ở chế độ Gỡ lỗi: Chúng ta hãy xem xét kỹ hơn điểm này. Chương trình dừng trước khi thực hiện dòng thứ 28. Ở phía dưới chúng ta thấy phần Gỡ lỗi, phần này mô tả tất cả thông tin về ứng dụng đang chạy. Phần Biến, như đã đề cập, chứa tất cả các biến và đối tượng có thể truy cập được từ phần này của ứng dụng. Phần Frames hiển thị các bước mà ứng dụng trải qua, bạn có thể xem lại bước trước đó và lấy toàn bộ dữ liệu cục bộ. Để chương trình tiếp tục hoạt động, 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: Để dừng chương trình, bạn cần nhấp vào hình vuông màu đỏ: Để khởi động lại ứng dụng ở chế độ gỡ lỗi, bạn cần nhấp vào mũi tên: Tiếp theo, để xem từng bước trong ứng dụng, bạn có thể sử dụng hai phím:
- F8 - xem qua một phần mã và không đi sâu vào các phương thức nội bộ;
- F7 - đi qua một phần mã và nhập các phương thức nội bộ.
beeHive.populateHoney()
, chúng ta cần nhấn F7 và sẽ chuyển sang: Tiếp theo, chúng ta chuyển qua chế độ gỡ lỗi bằng F8 bằng phương thức này cho đến hết và mô tả những gì xảy ra trong phương thức này:
- Dòng 25 - Stream API được sử dụng để lấy mật từ tất cả các loài ong;
- Dòng thứ 26 - mật ong được thêm vào dòng hiện có;
- Dòng thứ 27 - 2 đơn vị mật ong được phân bổ cho nữ hoàng;
- Dòng thứ 28 - hai đơn vị này được loại bỏ khỏi tổng lượng mật ong;
- Dòng 29 - tử cung ăn mật ong này.
## Documentation
Presentation based on honey getting process.
**Note**:
* 1 honey point = 2 nectar points
* 2 honey point queen bee eats every time when beehive populates the honey.
Và thế là xong: tất cả các lỗi được tìm thấy đã được sửa, chúng ta có thể bình tĩnh tiếp tục uống cà phê và đọc các bài viết trên Tóm tắt
Trong bài viết này chúng tôi đã tìm ra rằng:- không có công việc nào mà không có lỗi và việc gỡ lỗi là một cách tuyệt vời để giải quyết chúng;
- điểm ngắt là gì và nó tồn tại ở dạng nào;
- cách định cấu hình điểm dừng ngoại lệ;
- Cách điều hướng trong chế độ gỡ lỗi.
Bài viết để đọc
- Dự án được sử dụng trong bài viết
- IntelliJ IDEA và Debug: không phải lặn mà là lặn với ống thở
- Sự thật cay đắng về lập trình...
- Tài liệu chính thức
- Các loại điểm dừng. Tài liệu chính thức
GO TO FULL VERSION