Många ansträngningar görs varje dag av programmerare för att försöka minska långa, misslyckade avrättningar till orsaken till felet. Vi presenterar en algoritm för felorsak lokalisering baserad på en minskning till maximal tillfredsställelse problem (MAX-SAT), som frågar vad är det maximala antalet klausuler i en Boolesk formel som kan samtidigt tillgodoses av en uppdrag. På en intuitiv nivå tar vår algoritm som ingång ett program och ett feltest, och omfattar följande tre steg. För det första, med hjälp av begränsad modellkontroll, och en gräns som erhålls från genomförandet av testet, kodar vi semantiken för en avgränsad orullning av programmet som en Boolesk spårformel. För det andra, för ett felande program utförande (t.ex. en som bryter mot ett påstående eller en post-villkor), vi konstruera en otillfredsställande formel genom att ta formeln och dessutom hävda att input är feltest och att påståendet villkor håller i slutet. För det tredje, med hjälp av MAX-SAT, hittar vi en maximal uppsättning av klausuler i denna formel som kan uppfyllas tillsammans, och utdata komplementet som en potentiell orsak till felet. Vi har implementerat vår algoritm i ett verktyg som heter BugAssist som utför fellokalisering för C-program. Vi demonstrerar effektiviteten av BugAssist på en uppsättning benchmarking exempel med injicerade fel, och visar att i de flesta fall, BugAssist kan snabbt och exakt isolera några rader kod vars förändring eliminerar felet. Vi visar också hur vår algoritm kan ändras för att automatiskt föreslå korrigeringar för vanliga klasser av fel såsom off-by-one.
Jose och al. REF rapporterar en metod för att lokalisera fel i program, med hjälp av en minskning till Maximal tillfredsställande problem, som informerar det maximala antalet klausuler, av en Boolesk formel, som kan samtidigt tillgodoses genom ett uppdrag.
Cause clue clauses: error localization using maximum satisfiability
{'venue': "PLDI '11", 'journal': None, 'mag_field_of_study': ['Computer Science']}