Gỡ lỗi từ xa với IntelliJ IDEA

1. Giới thiệu

Gỡ lỗi từ xa cung cấp cho các nhà phát triển khả năng chẩn đoán các lỗi duy nhất trên máy chủ hoặc một quy trình khác. Nó cung cấp các phương tiện để theo dõi các lỗi thời gian chạy gây phiền nhiễu đó và xác định các tắc nghẽn hiệu suất và sụt giảm tài nguyên.

Trong hướng dẫn này, chúng ta sẽ xem xét gỡ lỗi từ xa bằng JetBrains IntelliJ IDEA. Trước tiên, hãy chuẩn bị ứng dụng mẫu của chúng tôi bằng cách thay đổi JVM.

2. Định cấu hình JVM

Chúng tôi sẽ sử dụng một ứng dụng mẫu của trình lập lịch Spring để dễ dàng kết nối và thêm các điểm ngắt vào một nhiệm vụ được lên lịch thường xuyên.

Hơn nữa, IntelliJ IDEA cung cấp các thông số JVM của chúng tôi như một phần của cấu hình :

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

2.1. Thông số JVM

Bên cạnh cấu hình Java Debug Wire Protocol (JDWP) - jdwp = transport = dt_socket - chúng tôi thấy các thông số máy chủ , tạm ngưngđịa chỉ .

Các máy chủ tham số cấu hình JVM làm mục tiêu cho chương trình gỡ rối của chúng tôi. Các đình chỉ tham số cho JVM phải chờ cho một khách hàng debugger để kết nối trước khi khởi động. Cuối cùng, tham số địa chỉ sử dụng một máy chủ ký tự đại diện và một cổng đã khai báo.

Vì vậy, hãy xây dựng ứng dụng lập lịch:

mvn clean package

Và bây giờ hãy khởi động ứng dụng, bao gồm tham số -agentlib: jdwp :

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \ target/gs-scheduling-tasks-0.1.0.jar

Mở bất kỳ thiết bị đầu cuối nào và chạy lệnh. Với ứng dụng của chúng tôi đã khởi động, bây giờ chúng ta hãy chuyển sang IntelliJ.

3. Chạy cấu hình trong IntelliJ IDEA

Tiếp theo, trong IntelliJ, chúng tôi tạo Cấu hình chạy mới để gỡ lỗi từ xa:

Bây giờ ứng dụng của chúng ta đang chạy, hãy bắt đầu phiên gỡ lỗi từ xa bằng cách nhấp vào nút Gỡ lỗi .

4. Gỡ lỗi từ xa

Tiếp theo, chúng tôi mở tệp ScheduleTask và đặt một điểm ngắt ở dòng 36 được hiển thị ở đây:

public void reportCurrentTime() { log.info("The time is now {}", dateFormat.format(new Date())); }

Vì nhiệm vụ thực hiện cứ sau năm giây, nó sẽ dừng ngay sau khi được thêm vào. Kết quả là bây giờ chúng ta có thể xem qua toàn bộ ứng dụng.

Đối với các sự cố khởi động ứng dụng, chúng tôi thay đổi cờ tạm ngưng thành n và đặt một điểm ngắt trong phương thức chính của Ứng dụng.

4.1. Hạn chế

Đôi khi việc ghi nhật ký và đầu ra khiến chúng ta bối rối khi gỡ lỗi từ xa. Các bản ghi sẽ không được gửi đến bảng điều khiển IDE, vì vậy một tệp nhật ký bên ngoài có thể được sử dụng và ánh xạ vào IDE để có khả năng gỡ lỗi mạnh mẽ hơn.

Cũng nên nhớ rằng trong khi gỡ lỗi từ xa là một công cụ rất mạnh, môi trường sản xuất không phải là mục tiêu thích hợp để gỡ lỗi .

5. Kết luận

Như chúng tôi đã đề cập trong bài viết này, gỡ lỗi từ xa với IntelliJ rất dễ thiết lập và sử dụng trong một vài bước ngắn.

Chúng tôi đã xem xét cách định cấu hình JVM ứng dụng của chúng tôi để gỡ lỗi cũng như một số hạn chế của công cụ quan trọng này trong hộp công cụ dành cho nhà phát triển của chúng tôi.

Ứng dụng mẫu có thể được tìm thấy trên GitHub.