2012-02-15 2 views
2

java에서 메소드의 실행 흐름을 분석 할 수 있도록 간단한 호출 그래프를 생성하고 싶습니다.Java에서 간단한 정적 호출 그래프를 만드는 방법은 무엇입니까?

예를 들어 코드에서 여러 메소드 호출에서 메소드 X에서 메소드 Y로 이동할 수 있다면 메소드 X에서 메소드 Y 로의 플로우를 보여주는 콜 그래프를 생성하고 싶습니다

SOOT를 사용해 보았지만이 호출 그래프를 얻지 못했습니다. 누구든지 그러한 호출 그래프를 생성하는 데 사용할 수있는 API를 알고 있습니까? 이 도구는 프로젝트의 숫자에 걸쳐 사용하기 위해 필요로 나는

+0

안녕하세요,이 솔루션을 찾을 수 있었습니까? – ramo

답변

0

당신은 Y에에 잡힌 예외를 던질 수있는 당신의 도움을, 그러나 나는 플러그인을 사용할 수 없습니다

덕분에 많은 Eclipse를 사용하고 있습니다 X를 분석 한 다음 예외 스택 추적을 분석하십시오.

// in X: 
try { 
    do your calls ... 
} catch (Exception e) { 
    StackTraceElement[] elements = e.getStackTrace(); 
    for (StackTraceElement e : elements) { 
     // ... evaluate/print ... 
     System.out.println(e); 
    } 
} 
+2

분석 할 시스템의 코드를 수정할 수 없습니다. 콜 그래프를 개발중인 도구의 일부로 사용하고 주어진 프로젝트의 코드를 분석하는 데 사용해야합니다. 따라서 코드는 그대로 두어야합니다. – ict1991

+0

전략은 여러분이 말했듯이 소스 코드에 제한되어 있지만, 이것을 읽은 다른 사람은이 제안을 기록해야합니다. 지금까지 내가 본 최고의 솔루션입니다. –

3

최근 Java에서 정적 분석 라이브러리를 사용할 수 있는지 살펴 보았습니다.

  • Chord가 : 여전히/유지 업데이트되는 강력한 프레임 워크를 보인다 여기에 그들 중 일부는 내가 건너왔다됩니다. 다음은 predefined analysis에있는 설명서 중 일부에 대한 링크입니다 (Call Graph 관련 내용 포함).
  • DepFinder :이 도구는 프로젝트에서 종속성 그래프를 생성하는 데 사용됩니다. 정적 호출 그래프 정보를 추출 할 수 있다고 상상해보십시오.
+0

코드가 죽은 것처럼 보입니다. 모든 나가는 링크'404' – Steen

0

JTracer를 생성하고 호출 그래프를 시각화하여 Java 프로그램의 실행 흐름을 이해하기위한 도구입니다. 메소드 입력 및 메소드 종료와 같은 다양한 이벤트가 로그되고 시각화됩니다. 코드 수정은 필요하지 않습니다.

관련 문제