Bagaimana cara debug / mengubah kode Java saat program sedang berjalan?


15

Saya baru saja melihat video yang menunjukkan bagaimana Notch (of Minecraft fame) melakukan debugging dan mengubah Minecraft saat sedang berjalan. Dia menjeda permainan, mengubah sesuatu dalam kode dan kemudian membatalkan permainan di mana perubahan langsung berlaku tanpa perlu me-restart program.

Bagaimana cara kerjanya? Jenis teknik apa yang digunakan untuk mencapai ini?


1
Dan dengan demikian adalah sejauh mana proses QA Notch.
DeadMG

1
Menurut T&J yang lebih lama di Stack Overflow , ini dapat dilakukan dengan fitur JPDA yang melakukan Penggantian File Kelas "HotSwap"
gnat

Lol, juga datang ke sini setelah video itu.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:


4

Java dapat melakukan hot-swapping di luar kotak. Jika Anda menggunakan IDE seperti Eclipse, itu akan berfungsi untuk mengubah metode-badan. Jika Anda ingin menerapkan perubahan kode lain, Anda mungkin ingin menggunakan alat. JRebel adalah produk yang mendukung lebih banyak kasing.

Saya tidak ingin melakukan pemasaran untuk produk itu, tetapi saya pribadi tidak tahu alternatif lain. Di situs web JRebel ada perbandingan fitur yang bagus .

Semoga itu bisa membantu.


+1 JRebel sangat bagus untuk "hot coding" di luar IDE seperti Eclipse.
Jalayn

4

Ini disebut penggantian kode panas dan memungkinkan IDE untuk mengubah kode live running melalui antarmuka debugging. Ini telah didukung oleh Sun JVM sejak Java 1.4.1

Namun, kecuali Anda menggunakan ekstensi JRebel JVM (komersial), itu terbatas pada perubahan di dalam badan metode. Jika Anda menambah / menghapus metode atau kelas, atau mengubah tanda tangan, Anda harus memulai ulang JVM.


Tautan yang benar adalah sekarang: wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
Pierre
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.