ProBe: Data formats for recording Program Behaviour


During an open discussion session at PASTE 2004, one issue discussed was that researchers working on program analysis tools (both static and dynamic) too rarely compare their actual analysis results to those produced by other tools. Such comparisons are difficult because published results rarely include complete program analysis results. Even when the tools are available, different tools often use very different representations of programs being analyzed, making it difficult to compare their results.

ProBe is an attempt to begin to change this unfortunate state, and make it easier to both report and compare results of different program analysis tools. The motivation for ProBe came from an e-mail exchange between Ondřej Lhoták, Nasko Rountev, and David J. Pearce. We agreed that the following were needed:

ProBe, then, is a prototype implementation of the above requirements. Specifically, ProBe consists of a collection of data formats for results of several common program analyses for Java, and tools for writing and reading/analyzing the analysis results. Of course, in order to become standard, a data format must be accepted by the community interested in a particular program analysis, and this undoubtedly requires discussion within the community. Thus, the existing data formats are not intended to be definitive; rather, they are intended as starting points for such discussions. That said, code is already available for generating analysis results in the formats from Soot and *J. All of the formats come with simple analysis tools, and the Call Graph format in particular comes with a more comprehensive collection of analysis tools.

Data Formats


The Java library is intended to be used in program analysis tools to generate output in the ProBe formats, and in evaluation tools to read the ProBe formats. Javadoc documentation is available.

Analysis/Evaluation Tools

Analysis and evaluation tools are specific to each individual data format, and are listed on the web page for their data format. See above for the links to the data formats.

Benchmark Results

Also maintained with ProBe are static and dynamic analysis results for a collection of commonly-used benchmarks.


ProBe is developed in a publicly readable Subversion repository at:
The ProBe build process generates a Jar file containing the Java classes of the ProBe library and tools. A nightly build containing all of ProBe is available.


The ProBe implementation depends on the GXL Java library. According to its SourceForge page, this library is no longer being actively maintained, and it contains a bug that prevents it from working with Java 1.5 and later. A patched version of the library is available.

Valid HTML 4.01!