[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