프로그램이 실행되는 동안 Java 코드를 디버그 / 변경하는 방법은 무엇입니까?


15

방금 Minecraft의 Notch가 Minecraft가 실행되는 동안 어떻게 디버깅하고 변경하는지 보여주는 비디오 를 보았습니다 . 그는 게임을 일시 중지하고 코드에서 무언가를 변경 한 다음 프로그램을 다시 시작할 필요없이 변경 사항이 즉시 적용되는 게임을 일시 중지합니다.

어떻게 작동합니까? 이것을 달성하기 위해 어떤 기술이 사용됩니까?


1
따라서 Notch의 QA 프로세스의 범위입니다.
DeadMG

1
Stack Overflow이전 Q & A에 따르면 , 이는 "HotSwap"클래스 파일 대체를 수행하는 JPDA 기능을 사용 하여 수행 할 수 있습니다
gnat

롤도 그 비디오 뒤에 왔어요
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

답변:


4

Java는 즉시 핫 스왑을 수행 할 수 있습니다. Eclipse와 같은 IDE를 사용하면 메소드 본문을 변경하는 데 효과적입니다. 다른 코드 변경 사항을 적용하려면 도구를 사용할 수 있습니다. JRebel은 더 많은 사례를 지원하는 제품입니다.

해당 제품에 대한 마케팅을하고 싶지 않지만 개인적으로 다른 대안을 모릅니다. JRebel 웹 사이트에는 멋진 기능 비교가 있습니다.

희망이 도움이됩니다.


+1 JRebel은 Eclipse와 같은 IDE 외부의 "핫 코딩"에 적합합니다.
Jalayn

4

핫 코드 교체 라고 하며 IDE가 디버깅 인터페이스를 통해 실행중인 코드를 변경할 수 있도록합니다. Java 1.4.1부터 Sun JVM에서 지원되었습니다.

그러나 (상업용) JRebel JVM 확장을 사용하지 않으면 메소드 본문 내부의 변경으로 제한됩니다. 메소드 또는 클래스를 추가 / 제거하거나 서명을 변경하는 경우 JVM을 다시 시작해야합니다.


올바른 링크는 다음과 같습니다. wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
Pierre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.