Download Latest Version TracerJD_sourcecode.tar.gz (58.1 kB)
Email in envelope

Get an email when there's a new version of TracerJD

Home
Name Modified Size InfoDownloads / Week
src 2014-11-29
TracerJD_sourcecode.tar.gz 2014-11-29 58.1 kB
TracerJDdemo.swf 2014-11-29 5.2 MB
TracerJD_with_example.tar.gz 2014-11-29 29.5 MB
README.txt 2014-11-29 3.6 kB
Totals: 5 Items   34.8 MB 0
/* README for TracerJD, the trace-based dynamic dependence analysis framework and toolkit for Java */

1. Purpose
=======================
This short document provides the usage instruction of TracerJD with the example subject program enclosed.

2. Example
=======================
We use a small subject Schedule1 and its test suite, both obtained from the SIR repository
(http://sir.unl.edu/portal/index.php), as the example data to demonstrate the usage of TracerJD.

3. File list 
=======================
cleanup.sh 
	- for cleaning up all generated data
compile.sh 
	- for compile the subject program (and the library it needs) source code
dynSlicer.sh 
	- the backward dynamic slicer tool built on TracerJD (example client analysis of the tracing framework)
libs	
	- all libraries on which TracerJD depends 
README.txt 
	- this file
run_uninstr.sh 
	- run the original subject (i.e., without instrumentation)
schedule_global.sh 
	- environment variables, simply for better script organization
stmtCov.sh 
	- the statement coverage reporter built on TracerJD (example client analysis of the tracing framework)
stmtProf.sh 
	- the statement-level performance profiling tool built on TracerJD (example client analysis of the tracing framework)
subject 
	- content of the subject program Schedule1
TraceAnalysis.sh 
	- a set of unit tests of the tracing framework of TracerJD, focusing on testing the elementary dependence querying routines
TracerInstr.sh 
	-  the static analysis phase
TracerJD.jar 
	- the TracerJD toolkit
TracerRun.sh 
	- the runtime tracing phase

4. Usage
=======================
[** The compiled subject binary is included in the package, so you may just skip the first two steps **]
[** We have only tested this toolkit using JDK 1.6 **]

step 1: compile the subject 

	sh compile.sh

Optionally, you can run the original program to ensure the original code works in your environment, using

	sh run_uninstr.sh [number of inputs to run]

output will be in subject/Schedule1/Runout-v0s1-orig-uninstr

step 2: run the static analysis phase of TracerJD
	
	sh TracerInstr.sh 

Instrumented code, including auxiliary static data will be in subject/Schedule1/tracerInstrumented-v0s1-orig

step 3: run the runtime tracing phase to generate traces, one trace file per test input will be found in
subject/Schedule1/tracerOutdyn-v0s1-orig/

	sh TracerRun.sh [number of inputs to run]

step 4: optionally, you can run a quick test of the trace-analysis phase of TracerJD

	sh TraceAnalysis.sh [number of inputs use]

step 5. run the application tools built upon the TracerJD tracing framework framework
use
	sh dynSlicer.sh [number of inputs to use]
to obtain some backward slices of criterion listed in subject/Schedule1/sc.txt

use
	sh stmtCov.sh [number of inputs to use]
to obtain statement coverage of the first N input used (N is the number of inputs to use)

use 
	sh stmtProf.sh [number of inputs to use]
to obtain the statement execution time per test input; (the result will list the execution time in nanoseconds for each 
instance of the statement on each row

[ Commandline argument above ]
* The argument "[number of inputs to run/use]" indicating the size of the input set to run/use is optional 
(there are totally 2650 inputs available for this example subject), by default only 10 will be run/used for 
quick testing purpose.

[ Troubleshooting ]
If you cannot successfully go through the example usage steps, please do not hesitate to send an email to hcai@nd.edu.
Thanks for using this toolkit.

Haipeng Cai
11/2014
Source: README.txt, updated 2014-11-29