1. A method comprising steps of: accessing at least a portion of a program to be debugged; accessing a behavioral model of the at least a portion of the program; receiving a failing input sequence from the at least a portion of the program; executing the failing input sequence stepwise in parallel on both the behavioral model and the at least a portion of the program; validating, after each execution, an expected behavior of the at least a portion of the program by executing test sequences constructed from the behavioral model, wherein the test sequences comprise model states and transitions; performing model mutation using mutation operators, for creating a hypothesis of faulty program behaviors; verifying each faulty program behavior in the hypothesis using the model mutators; and assigning a score to each faulty behavior, wherein the score comprises a percentage of executions of confirming sequences that match the faulty program behavior; and ranking the scores for producing a ranked list of diagnoses, wherein the diagnoses correspond to the mutation operators.