This page shows the usage of the three example client analyses built on the TracerJD tracing framework. All of these client analyses are included all for demonstrating how to use the fine-grained traces generated by the framework. The implementation of these client analyses also show how to develop applications on the framework mainly by using the dynamic dependence querying interface, which facilitates the applications' use of the underlying dependence traces.
(1) Application analyses built on the tracing framework - a backward dynamic slicer
ver=$1
seed=$2
NT=${3:-5} % number of inputs to use
INDIR=$subjectloc/tracerOutdyn-${ver}${seed}
MAINCP=".:libs/polyglot.jar:libs/sootclasses-2.3.0.jar:libs/jasminclasses-2.3.0.jar:libs/java_cup.jar:libs/LocalsBox.jar:$subjectloc/lib:libs/DUAForensics.jar:libs/InstrReporters.jar:libs/deam.jar:libs/Sensa.jar:libs/mcia.jar:TracerJD.jar:$subjectloc/lib"
starttime=`date +%s%N | cut -b1-13`
#"main" \
java -Xmx10g -ea -cp ${MAINCP} apps.DynSlicer \
"$INDIR" \
$subjectloc/sc.txt \
$NT \
#-debug
stoptime=`date +%s%N | cut -b1-13`
echo "RunTime for ${ver}${seed} elapsed: " `expr $stoptime - $starttime` milliseconds
(2) Application analyses built on the tracing framework - a statement-level performance profiler
ver=$1
seed=$2
NT=${3:-5} % number of inputs to use
INDIR=$subjectloc/tracerOutdyn-${ver}${seed}
MAINCP=".:libs/polyglot.jar:libs/sootclasses-2.3.0.jar:libs/jasminclasses-2.3.0.jar:libs/java_cup.jar:libs/LocalsBox.jar:$subjectloc/lib:libs/DUAForensics.jar:libs/InstrReporters.jar:libs/deam.jar:libs/Sensa.jar:libs/mcia.jar:TracerJD.jar"
SOOTCP=".:libs/rt.jar:libs/polyglot.jar:libs/sootclasses-2.3.0.jar:libs/jasminclasses-2.3.0.jar:libs/java_cup.jar:libs/LocalsBox.jar:$subjectloc/lib:libs/DUAForensics.jar:libs/InstrReporters.jar:libs/deam.jar:libs/Sensa.jar:libs/mcia.jar:TracerJD.jar:$subjectloc/lib:$subjectloc/bin/${ver}${seed}"
### static analysis
OUTDIR=$subjectloc/tracerInstrumented-$ver$seed-prof
function phase1() {
mkdir -p $OUTDIR
mkdir -p $subjectloc/out-TracerInstr-prof
starttime=`date +%s%N | cut -b1-13`
#-debug \
#-dumpJimple \
#-wrapTryCatch \
#-duaverbose \
#-dumpFunctionList \
#-debug \
$JAVA -Xmx1600m -ea -cp ${MAINCP} profile.EventInstrumenter \
-w -cp ${SOOTCP} \
-p cg verbose:false,implicit-entry:false -p cg.spark verbose:false,on-fly-cg:true,rta:true \
-f c -d "$OUTDIR" -brinstr:off -duainstr:off \
-wrapTryCatch \
-slicectxinsens \
-stmtProf \
-notracingval \
-allowphantom \
-staticCDInfo \
-main-class ${DRIVERCLASS} -entry:${DRIVERCLASS} \
-process-dir $subjectloc/bin/${ver}${seed} \
1>$subjectloc/out-TracerInstr-prof/instr-${ver}${seed}.out 2>$subjectloc/out-TracerInstr-prof/instr-${ver}${seed}.err
stoptime=`date +%s%N | cut -b1-13`
echo "StaticAnalysisTime for ${ver}${seed} elapsed: " `expr $stoptime - $starttime` milliseconds
}
### runtime tracing
MAINCP=".:libs/polyglot.jar:libs/sootclasses-2.3.0.jar:libs/jasminclasses-2.3.0.jar:libs/java_cup.jar:libs/LocalsBox.jar:$subjectloc/lib:libs/DUAForensics.jar:libs/InstrReporters.jar:libs/deam.jar:libs/Sensa.jar:libs/mcia.jar:TracerJD.jar:$subjectloc/lib:$OUTDIR"
function phase2() {
starttime=`date +%s%N | cut -b1-13`
#"-fullseq"
java -Xmx1600m -ea -cp ${MAINCP} trace.Runner \
"$subjectloc" \
${ver}${seed}-prof \
$DRIVERCLASS \
$NT \
-stmtProf \
5
stoptime=`date +%s%N | cut -b1-13`
echo "RunTime for ${ver}${seed} elapsed: " `expr $stoptime - $starttime` milliseconds
#cp $OUTDIR/{varIds.out,staticCDInfo.dat,staticDDInfo.dat} $subjectloc/tracerOutdyn-${ver}${seed}-prof/
}
### trace analysis
INDIR=$subjectloc/tracerOutdyn-${ver}${seed}-prof
function phase3() {
starttime=`date +%s%N | cut -b1-13`
#"main" \
java -Xmx1g -ea -cp ${MAINCP} apps.StmtProf \
"$INDIR" \
$subjectloc/stmt.txt \
$NT \
-debug
stoptime=`date +%s%N | cut -b1-13`
echo "RunTime for ${ver}${seed} elapsed: " `expr $stoptime - $starttime` milliseconds
}
phase1
phase2
phase3
(3) Application analyses built on the tracing framework - a test coverage reporter
ver=$1
seed=$2
NT=${3:-5} % number of inputs to use
INDIR=$subjectloc/tracerOutdyn-${ver}${seed}
MAINCP=".:libs/polyglot.jar:libs/sootclasses-2.3.0.jar:libs/jasminclasses-2.3.0.jar:libs/java_cup.jar:libs/LocalsBox.jar:$subjectloc/lib:libs/DUAForensics.jar:libs/InstrReporters.jar:libs/deam.jar:libs/Sensa.jar:libs/mcia.jar:TracerJD.jar:$subjectloc/lib"
starttime=`date +%s%N | cut -b1-13`
#"main" \
java -Xmx10g -ea -cp ${MAINCP} apps.StmtCov \
"$INDIR" \
$NT \
#-debug
stoptime=`date +%s%N | cut -b1-13`
echo "RunTime for ${ver}${seed} elapsed: " `expr $stoptime - $starttime` milliseconds
1.6.1