Có thể đính kèm trình gỡ lỗi IntelliJ IDEA vào một quy trình Java đang chạy không? Nếu có, làm thế nào?
Có thể đính kèm trình gỡ lỗi IntelliJ IDEA vào một quy trình Java đang chạy không? Nếu có, làm thế nào?
Câu trả lời:
Đúng! Đây là cách bạn thiết lập nó.
Tạo cấu hình chạy từ xa:
Cấu hình trên cung cấp ba trường chỉ đọc. Đây là các tùy chọn yêu cầu JVM mở cổng 5005 để gỡ lỗi từ xa khi chạy ứng dụng của bạn. Thêm cái thích hợp vào các tùy chọn JVM của ứng dụng bạn đang gỡ lỗi. Một cách bạn có thể làm điều này sẽ là như vậy:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
Nhưng nó phụ thuộc vào cách bạn chạy ứng dụng của bạn. Nếu bạn không chắc chắn cái nào trong ba cái áp dụng cho bạn, hãy bắt đầu với cái đầu tiên và đi xuống danh sách cho đến khi bạn tìm thấy cái nào hoạt động.
Bạn có thể thay đổi suspend=n
để suspend=y
buộc ứng dụng của mình đợi cho đến khi bạn kết nối với IntelliJ trước khi ứng dụng khởi động. Điều này rất hữu ích nếu điểm dừng bạn muốn đạt được xảy ra khi khởi động ứng dụng.
Khởi động ứng dụng của bạn như bình thường, sau đó trong IntelliJ chọn cấu hình mới và nhấn 'Gỡ lỗi'.
IntelliJ sẽ kết nối với JVM và bắt đầu gỡ lỗi từ xa.
Bây giờ bạn có thể gỡ lỗi ứng dụng bằng cách thêm các điểm dừng vào mã của bạn nếu muốn. Đầu ra của ứng dụng sẽ vẫn xuất hiện bất cứ nơi nào nó đã làm trước đó, nhưng các điểm dừng của bạn sẽ đạt được trong IntelliJ.
Remote
không có sẵn trên phiên bản cộng đồng? Tôi đang sử dụng phiên bản trả phí. Bất cứ ai với phiên bản cộng đồng có thể xác nhận?
System.out.println
trong IntelliJ khi gỡ lỗi từ xa không?
Điều đó là có thể, nhưng bạn phải thêm một số cờ JVM khi bạn khởi động ứng dụng của mình.
Bạn phải thêm cấu hình gỡ lỗi từ xa: Chỉnh sửa cấu hình -> Remote.
Sau đó, bạn sẽ tìm thấy trong các tham số cửa sổ hiển thị mà bạn phải thêm vào để thực hiện chương trình, như:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Sau đó, khi ứng dụng của bạn được khởi chạy, bạn có thể đính kèm trình gỡ lỗi của mình. Nếu bạn muốn ứng dụng của mình đợi cho đến khi trình gỡ lỗi được kết nối, chỉ cần thay đổi cờ treo thành y ( suspend=y
)
trong AndroidStudio hoặc ý tưởng
thêm "Tùy chọn VM" Cấu hình
“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”
ghi nhớ "địa chỉ"
Ngoài ra tôi sử dụng ứng dụng GUI Tomcat (trong trường hợp của tôi: C: \ tomcat \ bin \ Tomcat9w.bin).
Chuyển đến tab Java :
Đặt các thuộc tính Java của bạn, ví dụ:
Máy ảo Java
C: \ Tệp chương trình \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll
Máy ảo Java
C: \ tomcat \ bin \ bootstrap.jar; C: \ tomcat \ bin \ tomcat-juli.jar
Tùy chọn Java :
-Dcatalina.home = C: \ tomcat
-Dcatalina.base = C: \ tomcat
-Djava.io.tmpdir = C: \ tomcat \ temp
-Djava.util.logging.config.file = C: \ tomcat \ conf \ log.properies
-agentlib: jdwp = Transport = dt_socket, server = y, đình chỉ = n, địa chỉ = *: 8000
Các tùy chọn Java 9 :
--add-opens = java.base / java.lang = ALL-UNNAMED
--add-opens = java.base / java.io = ALL-UNNAMED
--add-opens = java.rmi / sun.rmi.transport = TẤT CẢ