동적 프로브 (예 : dtrace 또는 systemtap)를 사용하여 일부 Java 응용 프로그램을 추적하는 작업이 있습니다. 물론 응용 프로그램을 다시 시작하거나 다시 컴파일하지 않고 수행해야합니다. 메소드 호출 및 내부 JVM 이벤트에 대한 인터셉터의 동적 설정을 허용해야합니다. solaris에서는 dtrace로 수행 할 수 있지만 다른 시스템에서는 수행 할 수 없습니다. 이 작업을 어떻게 해결할 수 있습니까?"dtrace 스타일"로 Java 응용 프로그램을 추적하는 방법은 무엇입니까?
1
A
답변
1
리눅스에서 (적어도 페도라와 빨간 모자에) systemtap
으로 할 수 있습니다 (자세한 내용은 this link 참조). Java 응용 프로그램을 추적하는 데 byteman을 사용합니다. 리눅스가 아닌 다른 플랫폼에서는 systemtap
을 사용할 수 없지만 byteman
을 프로젝트에 추가하여 모든 OS에서 사용할 수 있습니다. Byteman은 사용자가 실행중인 Java 클래스에 사용자 정의 코드를 삽입 할 수 있도록합니다 (documentation 참조).
https://github.com/alfredxiao/jackplay를 시도해 볼 수 있습니다.이 코드는 코드를 변경하거나 재배포하지 않고도 추적을 사용할 수 있도록 설계되었습니다. 또한 JVM 라이브에서 메소드 본문을 다시 정의 할 수 있습니다. –