A Efficient Ball Larus Path Profiler for Java classes
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Link to sootOutput


Efficient Path Profiling

Advanced Software Engineering Project

Efficient path profiling


Possible Arguments for the PathProfiler

  • To instrument a particular class, use:
--cp [classPath]:[...]/workspace/PathProfiler/bin/ -pp [Class Name]#[Method Name]


--cp /home/arpith/iisc/ase/projects/path_profiling/testprogs/:/home/arpith/iisc/ase/projects/path_profiling/workspace/PathProfiler/bin/ -pp HelloWorld#simpleif

The above arguments specifies that only a method named simpleif() in HelloWorld.class is instrumented.

  • To instrument all members in a class, use:
--cp [classPath]:[...]/workspace/PathProfiler/bin/ -pp [Class Name]
  • To instrument all classes in a directory or jar file, use:
--cp [classPath]:[...]/workspace/PathProfiler/bin/ -pp --process-dir [DIR/JAR]

Run instrumented code

To run the instrumented class, run

java -cp [...]/workspace/PathProfiler/bin:. [Class Name]

Regenerating a path

To regenerate a path, set boolean regeneratePath = true;.
This code will most likely be in line 79 in PathProfiler.java.
Now, the profiler should ask for an user input. Give a path sum. The output would be the path taken by the program which generates taht path sum.

Running Benchmarks

Download DaCapo from here.
You may download it from official sources but in that case, you'll manually need to add xyz.arpith.pathprofiler.MyCounter.class (present in /workspace/PathProfiler/bin) to the jar file.

To run the benchmarks, find the file testprogs/DaCapo/runbm.sh

runbm.sh benchmark_name

System Configuration

This project was compiled and run on a machine running

  • Ubuntu 16.04 LTS (development branch)
  • Eclipse Neon Milestone 5
  • Java build 1.8.0_74-b02
  • DaCapo benchmark suite 9.12