2013-11-09 72 views
1

即時編寫程序來獲取並打印程序的調用圖。即時通訊使用煤煙嘗試和獲取調用圖,我通過作爲參數的java類我想打印出來,但是當我運行該程序時,我得到一個消息,煤煙無法找到類。如何配置eclipse類路徑來查找我想要打印的calss?eclipse class soot的類路徑

我的代碼:

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標誌,使整個程序的模式。否則w *包不會被執行。

+0

即時消息使用eclipse中的soot eclipse插件 – user1839169

+0

嘗試從命令行運行它;這爲用戶錯誤留下了更少的空間 – Eric

+0

我使用行java -classpath。 graph.CFG p1.myClass – user1839169