Skip to content
Eric Bodden edited this page Mar 15, 2015 · 1 revision

Since Version 2.0, both the Play-Out Agent and the Play-In Agent do not accept command-line arguments any longer but instead are configured through two configuration files, poa.properties and pia.properties respectively. The file format follows those for usual Java properties files.

TamiFlex looks for those files first in the current working directory and, if no such file exists, also in ${HOME}/.tamiflex. If the respective file cannot be found there, a default file will be created. You can modify this file to your liking. The defaults below hold if this configuration file contains no value for the respective setting.

Options for Play-Out

The Play-Out Agent supports the following options:

  1. dontDumpClasses: if true, no classes are dumped, and the agent just writes the log file; default:false
  2. dontNormalize: if true, normalization of randomized class names is switched off; default:false
  3. count: if true, the agent will report how often a certain reflective call will issued (additional column in the log file); default:false
  4. useDeclaredTypes: This option regards calls to getField, etc. If set to true then TamiFlex will report as owning type of the retrieved member the declared type on which the method was invoked. If set to false, TamiFlex will instead report the actual type of the member that the look-up returned.; default:false
  5. verbose: if set to true, causes TamiFlex to print additional information; default:false
  6. outDir: the output directory into which the log file and class files will be dumped; default:out
  7. transformations: A white-space separated list of transformations that TamiFlex uses for instrumentation. Users can extend TamiFlex by adding their own transformations here.; default:none

Why configuring transformations?

More transformation enable more probes, which collect more info, which increases the runtime overhead. Soot's static call-graph construction and the booster can currently only handle a subset of log-file entries for TamiFlex. Those are:

  • Class.forName
  • Class.newInstance
  • Constructor.newInstance
  • Method.invoke
  • Field.set
  • Field.get

Thus, if you use TamiFlex in combination with Soot, you will probably be interested in only probing those, as Soot ignores all other log-file entries anyway. In other cases it may be advisable to enable all probes instead. (For instance, RefaFlex requires all of them.)

Options for Play-In

The Play-In Agent supports the following options:

  1. dontNormalize: if true, normalization of randomized class names is switched off; default:false
  2. verbose: if set to true, causes TamiFlex to print additional information; default:false
  3. inDir: the input directory from which class files are read; default:out