看起来cflow切入点会将代码注入目标项目的每一行。我的Android项目大约有80,000行。当试图用eclipse运行应用程序时,它失败了。
“转换为Dalvik格式失败:无法执行dex:Java堆 空间”。
我查看了源代码,我的cflow切入点将每一行标记为建议,这可能是java堆空间不再使用的原因。 我已经在eclipse.ini中增加了堆大小,如下所示,但仍然失败。
...
--launcher.XXMaxPermSize 512M
-showsplash com.android.ide.eclipse.adt.package.product
--launcher.XXMaxPermSize 512m
-vmargs
-Dosgi.requiredJavaVersion = 1.6
-Xms512m
-Xmx1024m
-XX:MaxPermSize = 256m
...
所以我的问题是如何解决这样的问题?我应该放弃cflow吗?或者有更好的方法来使用它?
我的目的是根据用户操作生成函数调用树。我创建了UI动作切入点,然后使用cflow来获取函数调用树。
我的切入点如下:
pointcut cflowOnClick():
cflow(execution(public void onClick(View)))`