0
我正在嘗試使用Soot的槳框架爲具有Java代碼的20KLOC-50KLOC的android應用程序執行上下文敏感的「指向」分析。由於應用程序沒有主要方法,因此我修改了soot以擁有多個入口點。當我運行分析它拋出以下異常菸灰+槳大程序分析
Exception in thread "main" java.lang.RuntimeException: Value 65543 was too large in domain soot.jimple.paddle.bdddomains.MethodDomain!
at jedd.internal.Domain.setBits(Domain.java:62)
at jedd.internal.Jedd.literal(Jedd.java:158)
我SigDomain(14)SigDomain.jedd文件中這引起了分析以失敗結束更長的時間,但仍然運行槳源代碼,增加值14給出同樣的例外。 (我還將堆棧大小和jvm的堆大小增加到了1 GB和4 GB)。 如果我設置這個值SigDomain(14)太大~20000,槳分析甚至不會啓動。
我有以下的槳選項:
opt.put("verbose","true");
opt.put("bdd","true");
opt.put("backend","javabdd");
opt.put("context","kcfa");
opt.put("k","2");
opt.put("propagator","auto");
opt.put("conf","ofcg");
opt.put("order","32");
opt.put("q","auto");
opt.put("set-impl","double");
opt.put("double-set-old","hybrid");
opt.put("double-set-new","hybrid");
opt.put("pre-jimplify","false");
PaddleTransformer pt = new PaddleTransformer();
PaddleOptions paddle_opt = new PaddleOptions(opt);
pt.setup(paddle_opt);
pt.solve(paddle_opt);
soot.jimple.paddle.Results.v().makeStandardSootResults();
非常感謝埃裏克。我會繼續前進,並將「cs-demand」設置爲真實以進行需求驅動分析。我在郵寄堆棧溢出之前2天將郵件發送給soot-list,但它仍在等待版主批准。 – user2037626
嗨。我不清楚你的意思。煙塵清單通常不會受到審覈... – Eric
在我將問題以電子郵件發送至[email protected]後,我收到了此電子郵件。您的郵件發送至'Soot-list'主題 「用於大型程序分析的槳」 正等待列表管理員審覈批准。 它正在舉行的原因: 發表非會員以會員制名單 要麼消息將能張貼到列表,或者您將收到主持人的決定 通知。如果您想取消 本貼子,請訪問以下URL:之後,我沒有收到電子郵件。 – user2037626