2014-02-06 2 views
0

컴파일 된 .class 파일에는 전체 Java 클래스에 해당하는 바이트 코드가 들어 있습니다. 그러나 실행 중에 로직 및 입력에 따라 일부 바이트 코드는 여러 번 실행되지만 일부는 실행되지 않을 수도 있습니다. Java 프로그램의 수명 동안 실행 된 해당 바이트 코드의 추적을 얻을 수있는 방법이 있습니까?Java 프로그램에서 런타임에 실행되는 바이트 코드는 어떻게 얻을 수 있습니까?

편집 : 사용 사례

은 내가 사용 사례가 도움이 될 수 있습니다 생각합니다. 프로그램을 실행 한 후 실행 된 바이트 코드 명령어의 빈도를 계산하고 싶습니다 (예 : 10 회 수행). 이 목적을 위해 사용할 수있는 프로파일 러 또는 다른 도구가 있습니까?

+2

프로필러를 사용해 보셨습니까? –

+1

EMMA 코드 적용 도구 (또는 다른 유사한 계측 라이브러리)를 살펴볼 수 있습니다. IDE와 통합하여 소스 레벨에서 어떤 코드 행을 실행했는지 표시 할 수 있습니다. – slipperyseal

+0

위의 두 가지 사항에 모두 동의하십시오. 전체 트레이스를 가져 오면 - 당신을 위해 할 수있는 계장 된 JVM을 발견하면 - 아주 느리게 돌아가고 분석하기가 대단히 느릴 거대한 로그 파일을 생성 할 것입니다. 프로그램의 어느 부분이 얼마나 자주 실행되고 있는지를 보여주는 코드 커버리지 도구. 통계적 프로파일 러는 특히 런타임의 특정 기간에만 집중할 수있는 이론적으로는 덜 정확하지만 실행 시간을 단축 시키므로 실제로는 특히 다중 스레드 코드에서 훨씬 더 정확합니다. – keshlam

답변

1

이러한 도구에 대한이 모호한 종이 회담이

http://ccsl.icmc.usp.br/files/vincenzi-et-al-2003.pdf

가 (2003)

그것은 상태 꽤 오래된의이 논문은 자바 프로그램에 대한 커버리지 테스트 도구를 설명

및 JaBUTi (Java 바이트 코드 이해 및 테스트)라는 Java 기반 구성 요소. 을 필요로하는 다른 테스트 도구와 달리 Java 소스 코드는 프로그램 분석, 계측 및 적용 범위 평가를 수행하기 위해 도구는 Java 바이트 코드 만 필요합니다. 바이트 코드는 어셈블리와 비슷한 언어로 볼 수 있으며 은 프로그램에 대한 상위 수준의 정보를 유지합니다 [Lindholm and Yellin, 1999]. 따라서 JaBUTi를 사용하면 소스 코드를 사용할 수없는 경우에도 Java 프로그램 및 Java 기반 구성 요소를 테스트 할 수 있습니다. 바이트 코드 수준에서 작동하는 다른 테스트 도구가 있습니다. 예를 들어 프레임 워크 JUnit [Beck and Gamma, 2002]는 Java 바이트 코드를 테스트하는 데 사용할 수 있지만 블랙 박스 테스트 만 수행 할 수 있습니다. 어떤 적용 범위 정보도보고하지 않습니다. JTest [Corporation, 2002] 및 GlassJAR [Edge, 2002]는 바이트 코드 수준에서 제어 흐름 테스트 기준에 대해 과 관련된 적용 범위 정보를 제공하지만 어느 것도 데이터 흐름 적용 범위 테스트 기준을 지원하지 않습니다. 바이트 코드 수준에서의 협력을 통해 우리는 해당 소스 코드를 사용할 수있을뿐만 아니라 Java 응용 프로그램을 테스트 을 사용할 수있는 도구를 제공 할뿐만 아니라, 소프트웨어 구성 요소처럼 만 바이트 코드를 사람

관련 문제