2013-11-09 3 views
1

메신저 프로그램의 콜 그래프를 가져 와서 인쇄하는 프로그램을 작성합니다. 메신저 시도하고 호출 그래프를 얻으려면 매끄 럽을 사용하고 인수로 전달하는 Java 클래스 인쇄 할 때 있지만 프로그램을 실행할 때 그을음 캔트 클래스를 찾을 메시지를 가져옵니다. 어떻게 인쇄 할 calss 찾을 일식 클래스 경로를 구성합니까?그을음에 대한 이클립스 클래스 경로

내 코드 : 당신은 -w 플래그를 사용하여 전체 프로그램 모드를 활성화해야합니다

public class CFG extends SceneTransformer 
{  
    public static void main(String[] args) 
    { 
     if(args.length == 0) 
     { 
      System.out.println("Syntax: java CFG [soot options]"); 
      System.exit(0); 
     }    

     PackManager.v().getPack("wjtp").add(new Transform("wjtp.cfg", CFG.v())); 

    // Just in case, resolve the PrintStream and System SootClasses. 
    Scene.v().addBasicClass("java.io.PrintStream",SootClass.SIGNATURES); 
     Scene.v().addBasicClass("java.lang.System",SootClass.SIGNATURES); 
     soot.Main.main(args); 
    } 

    private static CFG instance = new CFG(); 

    public static CFG v() { return instance; } 

    protected void internalTransform(String phaseName, Map options) 
    { 
    System.out.println("Entering CFG transformer"); 
    System.out.println("phaseName = " + phaseName); 
    System.out.println("options = " + options); 
    CallGraph cg = Scene.v().getCallGraph(); 
    SootMethod m = Scene.v().getMainMethod(); 
    Iterator targets = new Targets(cg.edgesOutOf(m)); 
    while (targets.hasNext()) { 
     SootMethod trgt = (SootMethod)targets.next(); 
    System.out.println(m.getName() + " -> " + trgt.getName() + ";"); 
    } 
    System.out.println("Exiting CFG transformer"); 
    } 
} 

답변

1

. 그렇지 않으면 w * 팩이 실행되지 않습니다.

+0

메신저에서 soot eclipse plugin을 사용합니다. – user1839169

+0

명령 행에서 실행 해보십시오. 이것은 사용자 오류 – Eric

+0

에 대한 여유 공간을 남기지 않습니다. java -classpath 행을 사용합니다. graph.CFG p1.myClass – user1839169

관련 문제