__________________________________ ABOUT HYBRID_VM_2.0 This Hybrid_VM_2.0 provides three major fault localization techniques for a collection of 74 errors from four open source C projects. These techniques include: - Dynamic Slicing - Statistical Debugging (Ochiai, Jaccard & Tarantula) - Hybrid approach (marriage of both dynamic slicing and Statisical debugging) The open source c projects making up the subjects in this VM include: -CoREBench: real open source errors from UNIX utilities - grep, coreutils and findutils. -Tcas: injected errors from the Siemens and SIR Benchmark __________________________________ CONFIGURATION This VM has gcc(gcov), frama-c slicing tool, python and pip installed. Python-networkx and matplotbib python libraries are also installed. __________________________________ USING THE HYBRID VM the folder "~/work/hybrid" contains the fault localization script: * faultLocalizer.py .. to execute all relevant scripts for all/each technique(s) and all/each subject(s) -- call with "python faultLocalizer.py " Default execution format with command line option is: "python faultLocalizer.py -t -s " More detailed execution format with command line options is: "python faultLocalizer.py -t -s -m -v -r " Specific command line options () include: * (-t): all, ochiai, slicing or hybrid * (-s): all, coreutils, grep, findutils or tcas * (-m): abs (absolute) or per (percent) * (-v): a multiple of 5 in the range 5 to 95 (max value range e.g. -v 5) * (-r): ord (ordinal) or mod (modified competition) _______________________________ SAMPLE USE CASES * to execute faultLocalizer for hybrid fault localizer for TCAS subject in default mode (i.e. -v 5 -m abs), execute: "python faultLocalizer.py -t hybrid -s tcas" * to execute faultLocalizer for the statistical debugging technique with OCHIAI for the GREP subject, using ordinal ranking, execute: "python faultLocalizer.py -t ochiai -s grep -r ord" * to execute faultLocalizer for the statistical debugging technique with TARANTULA for the FINDUTILS subject, using modified competition ranking, execute: "python faultLocalizer.py -t tarantula -s findutils -r mod" * to execute faultLocalizer for the statistical debugging technique with JACCARD for the TCAS subject, using ordinal ranking, execute: "python faultLocalizer.py -t jaccard -s tcas -r ord" * to execute faultLocalizer for dynamic slicing for the FINDUTILS subject, execute: "python faultLocalizer.py -t slicing -s findutils" * to execute faultLocalizer for the hybrid technique for the TCAS subject for absolute N value 5, execute: "python faultLocalizer.py -t hybrid -s tcas -m abs -v 5" * to execute faultLocalizer.py for all techniques and subjects, with command line options for absolute N value 5 for the hybrid approach and modified competition ranking for Statistical Debugging (using Ochiai) execute: "python faultLocalizer.py -t all -s all -m abs -v 5 -r mod" _______________________________ RESULTS * All results are stored in a csv file titled: _result.csv (e.g. hybrid_result.csv) in the folder: ~/work/hybrid//scripts/ _______________________________ IMPLEMENTATION DETAILS Lots of files required for the computation of scores of techniques and subjects are pre-computed in this VM, these files include - gdb logs, slices, call graphs, statistical debugging ranking and coverage information. Note: * suspicious methods are automatically determined from gdb logs (or gcov) for HYBRID_VM_2.0. * TCAS shortest call sequences for inter-procedutal slicing are also automatically computed.