BLAST - Bytecode-Level Analysis on Sliced Traces

Do you need to understand the execution history of your Java program? Do you need to run different deep dynamic analyses on an execution? Here we are! BLAST is an infrastructure to capture and analyze bytecode-level execution traces in Java. It provides you with the possibility to query every aspect of an execution, including every single bytecode instruction executed, every single memory location accessed, and every single value that ever existed. BLAST is a dynamic analysis framework that works offline on execution traces. It allows you to easily compute dynamic program slices that help to analyze explicit and implicit information flow.

BLAST provides a platform for all kinds of deep dynamic analyses. We aim at making it as easy-to-use as possible. We welcome any feedback for further improvements.

BLAST is growing rapidly. We recently introduced features for writing the trace into a relational database so you can use SQL for debugging, or for generating source-code-like traces out of bytecode events and vice versa that we call abstraction/deabstraction.

Getting Started

Our Getting Started Guide walks you through getting, building, and using BLAST.

Source Code

BLAST is open source. You can download the current version of BLAST as a zip file from this link.