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");
}
}
메신저에서 soot eclipse plugin을 사용합니다. – user1839169
명령 행에서 실행 해보십시오. 이것은 사용자 오류 – Eric
에 대한 여유 공간을 남기지 않습니다. java -classpath 행을 사용합니다. graph.CFG p1.myClass – user1839169