Jak debugować / zmieniać kod Java podczas działania programu?

15

Właśnie widziałem wideo pokazujące, jak Notch (sławna gra Minecraft) debuguje i zmienia Minecraft podczas jego działania. Wstrzymuje grę, zmienia coś w kodzie, a następnie wstrzymuje grę, w której zmiana zaczyna obowiązywać natychmiast, bez potrzeby ponownego uruchamiania programu.

Jak to działa? Jaką technikę stosuje się do tego celu?

RoToRa
źródło
1
I tak jest zakres procesu kontroli jakości Notcha.
DeadMG
Lol, też przyszedł tu po tym filmie.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

4

Java może wykonywać wymianę na gorąco od razu po wyjęciu z pudełka. Jeśli użyjesz IDE, takiego jak Eclipse, będzie działać na zmianę ciał metod. Jeśli chcesz zastosować inne zmiany kodu, możesz użyć narzędzia. JRebel to produkt, który obsługuje więcej przypadków.

Nie chcę prowadzić marketingu tego produktu, ale osobiście nie znam innej alternatywy. Na stronie JRebel jest ładne porównanie funkcji .

Mam nadzieję, że to pomaga.

Zwykły John
źródło
+1 JRebel doskonale nadaje się do „kodowania na gorąco” poza środowiskiem IDE, takim jak Eclipse.
Jalayn
4

Nazywa się to zastępowaniem gorącego kodu i umożliwia IDE zmianę działającego kodu za pośrednictwem interfejsu debugowania. Jest obsługiwany przez Sun JVM od Java 1.4.1

Jednakże, chyba że użyjesz (komercyjnego) rozszerzenia JVeb JVM, jest ono ograniczone do zmian w treściach metod. Jeśli dodasz / usuniesz metody lub klasy lub zmienisz podpisy, musisz ponownie uruchomić JVM.

Michael Borgwardt
źródło
Prawidłowy link to teraz: wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
Pierre