2010-12-08 4 views
2

저는 매우 큰 java/servlets/web 프로젝트에서 작업 중이며 어떤 클래스와 메소드가 호출되는지 찾기가 어렵습니다. 때로는 올바른 수업을 찾는 데 몇 시간이 걸릴 수도 있습니다. 약간의 도움이되는 응용 프로그램이나 플러그인 또는 기술이 있다면? 메신저를 사용하여 일식.어떤 클래스/메소드가 호출되는지를 알려주는 프로그램이 있습니까

편집 : 나는 아파치와 톰캣

+0

런타임 또는 개발 시점에 저에게 맞습니까? –

+0

@Preet at developement – code511788465541441

답변

1
  • CTRL + ALT + H를 사용하거나 마우스 오른쪽 버튼을 클릭하고있어> (메소드 선언에) 공모 계층 구조는 등 자신의 호출자와 함께, 당신에게 모든 발신자를주고, 것입니다 . 계층 구조를 반대로 전환 할 수도 있습니다.

  • 프로젝트는 주어진 클래스가 사용되는 위치를 알려줍니다.

+0

답장을 보내 주셔서 감사합니다. Bozho,하지만 그건 내가 묻고있는 것이 아닙니다. 어떤 방법을 클릭하여 호출 계층 구조를 표시했는지 알고 있다면 이미 찾고있는 것을 발견했습니다.웹 브라우저에서 내 응용 프로그램 (웹 브라우저)의 링크를 클릭 할 때 어떤 메소드가 호출되는지 알 필요가 있습니다. 프레임 워크와 Eclipse의 간단한 검색 기능에 대해 약간의 이해가 필요하다면 – code511788465541441

+1

@ user521180입니다. – Bozho

2

Bozhos에 대한 귀하의 의견에 관해서는 귀하의 서버 인스턴스에서 프로파일 러를 사용하십시오. 클라이언트 응용 프로그램 ("브라우저")에서 링크를 클릭하기 직전 프로파일 링을 시작하고 올바른 응답을받은 직후에 중지하십시오. 그런 다음 프로파일 러 로그/뷰를 조사하여 실제로 서버에서 어떤 일이 발생했는지 확인하십시오.

Eclipse Test & Performance Tools Platform Project을 사용해보세요.

0

AOP를 사용하여 코드의 특정 부분에 추적/기록 측면을 추가하는 것이 좋습니다. 이렇게하면 코드를 업데이트 할 필요가 없으며 메서드, 클래스 및 매개 변수의 이름과 함께 호출되는 모든 메서드에 대한 줄을 기록하는 애스펙트를 작성할 수 있습니다. 프로덕션 버전을 빌드 할 때 프로덕션 시스템에서 추적 로깅을 방지하기 위해이 부분을 '해제'할 수 있습니다. AOP에 익숙하다면 컨트롤러 클래스의 특정 메소드 또는 이와 유사한 메소드에 대한 호출 만 로그하는 등 aspect와 pointcut을 쉽게 조정할 수있다.

이 솔루션에 대한 추가 정보가 필요하면이 답변에 대해 더 자세한 정보를 요청하거나 AOP 및 로깅을 위해 google에 자유롭게 의견을 말하십시오.

1

Bhozo의 대답에 대한 귀하의 의견을 통해 나는 개발 당시의 의미가 아니라 런타임에서의 결론이라는 결론에 도달했습니다.

디버거를 응용 프로그램에 연결하고 일시 중지하는 것이 좋습니다. 그 때 호출 스택을 검사 할 수 있습니다.이 호출 스택은 일반적으로 어디에서 볼지를 알려줍니다.

은, 그렇게 다음과 같은 설정으로 자바 응용 프로그램을 실행하려면 :

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n 

그런 다음 이클립스, 포트 8787에 '원격'에 대한 디버그 구성을 추가하고 실행합니다. 이제 디버거가 응용 프로그램에 연결됩니다. eclipse를 디버그 관점에 넣으십시오.

이제 응용 프로그램에서 링크를 클릭하고 즉시 디버거에서 일시 중지 단추를 클릭하십시오. 이제 콜 스택을 볼 수 있습니다. 일반적으로 단서를 얻으면 신속하게 중단 점을 넣을 수 있습니다. 그러나이 기술은 단서를 얻을 수 있도록 도와줍니다.

관련 문제