Wie kann ich Java-Code debuggen / ändern, während das Programm ausgeführt wird?


15

Ich habe gerade ein Video gesehen, das zeigt, wie Notch (of Minecraft Fame) Minecraft debuggt und verändert, während es läuft. Er unterbricht das Spiel, ändert etwas im Code und unterbricht dann das Spiel, wobei die Änderung sofort wirksam wird, ohne dass das Programm neu gestartet werden muss.

Wie funktioniert das? Mit welcher Technik wird das erreicht?


1
Und damit ist das Ausmaß des Notch-QA-Prozesses gemeint.
DeadMG

1
Nach einem älteren Q & A bei Stack - Überlauf , dies mit getan werden könnte JPDA Feature, das „HotSwap“ Class Datei Replacement
gnat

Lol, kam auch hier nach dem Video.
Ciro Santilli新疆改造中心法轮功六四事件

Antworten:


4

Java kann Hot-Swapping direkt ausführen. Wenn Sie eine IDE wie Eclipse verwenden, funktioniert dies für das Ändern von Methodenkörpern. Wenn Sie andere Codeänderungen anwenden möchten, möchten Sie möglicherweise ein Tool verwenden. JRebel ist ein Produkt, das mehr Fälle unterstützt.

Ich möchte für dieses Produkt kein Marketing betreiben, aber ich persönlich kenne keine andere Alternative. Auf der JRebel-Website gibt es einen schönen Feature-Vergleich .

Ich hoffe, das hilft.


+1 JRebel eignet sich hervorragend für "Hot Coding" außerhalb einer IDE wie Eclipse.
Jalayn

4

Es heißt Hot Code Replace und ermöglicht einer IDE, laufenden Code über die Debugging-Schnittstelle zu ändern. Es wird seit Java 1.4.1 von Sun JVM unterstützt

Sofern Sie nicht die (kommerzielle) JRebel-JVM-Erweiterung verwenden, ist sie auf Änderungen innerhalb von Methodenkörpern beschränkt. Wenn Sie Methoden oder Klassen hinzufügen / entfernen oder Signaturen ändern, müssen Sie die JVM neu starten.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.