[Soot-list] Large program call graph analysis
Daniel Dean
djdean2 at ncsu.edu
Thu Sep 25 18:04:34 EDT 2014
Hi,
I'm interested in using soot to extract and analyze the call graph for
relatively large programs (e.g., Hadoop). I've followed the tutorials
and have gotten soot working for small programs but I've run into
problems when trying create the call graph for larger programs.
Specifically, when trying to construct a call graph starting at the
NameNode entry point, I'm getting a soot.CompilationDeathException. I
think its because my soot classpath is not set correctly. The command
I'm using is:
java -jar soot-2.5.0.jar -main-class NameNode -w -cp
/home/daniel/Desktop/HadoopSource/hadoop-2.0.0-alpha-src/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode
-d SootOutput -allow-phantom-refs NameNode
What isn't clear to me is if I don't set the classpath to exactly that
directory, soot reports that it cannot find the NameNode class. For
example, a classpath of "..hadoop/hdfs/server/" does not work. I
believe the soot.CompilationDeathException is a result of the some
missing files in other directories not being included in the
classpath. Is the solution to manually add each directory with any
.java/.class files to the classpath? Is there any way I can specify a
top level directory and have soot also check any subdirectories for
.java/.class files as well?
I apologize if this has a trivial solution, but I've been stuck on
this for a few days now and nothing I try seems to help. Any help at
all, or where I can look for help, would be greatly appreciated. I can
also provide more details if needed.
Best,
Daniel
More information about the Soot-list
mailing list