디버거, 계측 및 JVMTI의 분야에서 새로운입니다. 그래서 나는 그들에 대해 몇 가지 질문이 있습니다.JDI, Java 바이트 코드 계측 및 Java 에이전트 (JWDP, JVMTI)
JDI (Java Debugger Interface), JWDP, javaagent 및 네이티브 에이전트 (JVMTI)의 차이점은 무엇입니까? 및 Java 계측 API는 어디에 적합합니까?
대상 Java 응용 프로그램에서 예외를 가로 채기 위해 JDI를 사용하고 있습니다. 하지만 JDI가 목표 앱의 성능에 어떤 영향을 미치는지에 대해 이야기한다면 JDI가 충분하지 않다는 것을 알게되었습니다. JVMTI와 바이트 코드 계측을 결합하여 가장 적합한 애플리케이션이이를 수행한다고 읽었습니다. 하지만 바이트 코드 계측을 JVMTI와 함께 사용하는 방법을 이해할 수는 없습니다. 그렇다면 JVMTI와 함께 바이트 코드 계측을 어떻게 할 수 있습니까? 예제가 도움이 될 것입니다.
자바에서 바이트 코드와 기계 코드를 모두 입력 할 수 있습니까?
정적 바이트 코드 분석을 JVMTI와 함께 사용할 수 있습니까? 그렇다면 어떻게?
아무런 관련이 없거나 잘못 되었다면 알려주세요.
답장을 보내 주셔서 감사합니다. 정적 분석에 대한 정보는 실제로 대상 응용 프로그램을 실행하지 않고 예외를 throw 할 수있는 코드 조각을 찾을 수있는 경우에만 사용됩니다. 어쨌든 가까운 장래에 바이트 코드 분석을 사용하지 않을 것입니다. 바이트 코드 분석이 JVMTI를 사용하여 수행 될 수 있다면 나는 골똘했다. 이것에 대한 약간의 튜토리얼을 지적하면 도움이 될 것입니다. 나는 이미 이것에 대한 Google 검색하지만 아무것도 찾을 수 없습니다. 감사. –
관심있는 모든 사이트가 예외를 throw 할 수있는 정확한 사이트 (예 :'throw new MyException()';) 인 경우 ASM을 사용하여 ATHROW 명령어를 감지 한 다음 해당 사이트에서 일부 계측 도구를 방출 할 수 있습니다. 그러나 예외를 throw 할 수있는 코드를 호출 할 수있는 모든 호출 사이트를보다 광범위하게 찾는 것이 목표라면 정적 호출 그래프를 작성해야합니다. 그리고 그것을 위해, 나는 [soot] (https://sable.github.io/soot/)로 향했다. –