Làm cách nào để gỡ lỗi / thay đổi mã Java trong khi chương trình đang chạy?


15

Tôi vừa xem một video cho thấy Notch (của danh tiếng Minecraft) đang gỡ lỗi và thay đổi Minecraft khi nó đang chạy. Anh ta tạm dừng trò chơi, thay đổi một cái gì đó trong mã và sau đó bỏ tạm dừng trò chơi nơi thay đổi có hiệu lực ngay lập tức mà không cần phải khởi động lại chương trình.

Cái này hoạt động ra sao? Những loại kỹ thuật được sử dụng để đạt được điều này?


1
Và đó là mức độ của quy trình QA của Notch.
DeadMG

1
Theo một câu hỏi và trả lời cũ hơn về Stack Overflow , điều này có thể được thực hiện với tính năng JPDA thực hiện Thay thế tệp lớp "HotSwap"
gnat

Lol, cũng đến đây sau video đó.
Ciro Santilli 心 心

Câu trả lời:


4

Java có thể trao đổi nóng ra khỏi hộp. Nếu bạn sử dụng một IDE như Eclipse, nó sẽ hoạt động để thay đổi các thân phương thức. Nếu bạn muốn áp dụng các thay đổi mã khác, bạn có thể muốn sử dụng một công cụ. JRebel là một sản phẩm hỗ trợ nhiều trường hợp hơn.

Tôi không muốn tiếp thị cho sản phẩm đó, nhưng cá nhân tôi không biết bất kỳ sự thay thế nào khác. Trên trang web của JRebel có một tính năng so sánh hay .

Mong rằng sẽ giúp.


+1 JRebel là công cụ tuyệt vời để "mã hóa nóng" bên ngoài một IDE như Eclipse.
Jalayn

4

Nó được gọi là mã nóng thay thế và cho phép IDE thay đổi mã chạy trực tiếp thông qua giao diện gỡ lỗi. Nó đã được Sun JVM hỗ trợ kể từ Java 1.4.1

Tuy nhiên, trừ khi bạn sử dụng phần mở rộng JVM của JRebel (thương mại), nó chỉ giới hạn ở những thay đổi bên trong các thân phương thức. Nếu bạn thêm / xóa các phương thức hoặc các lớp hoặc thay đổi chữ ký, bạn phải khởi động lại JVM.


Liên kết chính xác là ngay bây giờ: wiki.eclipse.org/FAQ_What_is_hot_code_Vplace%3F
Pierre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.