A delta debugging framework implemented in Python. This framework helps to isolate the minimal failure-inducing input from a larger input that causes a failure. It also provides benchmarks for testing and evaluating the effectiveness and efficiency of delta debugging algorithms.
This project is a capstone project for COMP5709 (IT Capstone Project - Individual) at The University of Sydney.
- Multiple delta debugging algorithms: ddmin, ZipMin, HDD, ProbDD
- Support for various input types: files (both binary and text), strings, lists
- Benchmarking tools to evaluate algorithm performance
- Visualization tools for benchmark results
- Pythonic API for easy integration and usage
- Install
uvif you haven't already. - Clone this repository:
git clone https://github.com/FreeFlyingSheep/delta-debugging.git - Navigate to the project directory:
cd delta-debugging. - Install the project:
uv sync. - (Optional) To install with all extra dependencies for development:
uv sync --all-extras.
See examples/ for usage examples.
See API documentation for more details.
examples/basic.pyuses the delta debugging framework with a custom oracle function.examples/benchmark.pyuses the benchmarking tools provided by the framework.examples/binutils_gdb.pyuses the delta debugging framework for minimizing executable inputs forbinutils-gdbbugs.examples/valgrind.pyuses the delta debugging framework for minimizing executable inputs forvalgrindbugs.examples/figure.pygenerates comparison figures from benchmark results.
To run the examples, install the project as described in the installation section.
Then use uv run examples/<example_file> to run the examples.
To run examples/binutils_gdb.py and examples/valgrind.py, Docker is required.
Refer to scripts/run_docker.sh for building and running the Docker container.
Note that these two examples may take a long time to run.
Additionally, a QEMU image is provided to run the examples in a consistent environment.
The results of running the examples using the QEMU image are also provided in the examples/ folder.
The QEMU image can be downloaded from Releases.