Vanligtvis avlusning börjar när under ett program utförande en punkt nås där ett uppenbart felaktigt värde observeras. En allmän och kraftfull strategi för automatiserad felsökning kan baseras på att identifiera ändringar i programtillståndet som kommer att föra genomförandet till en framgångsrik avslutning. Att söka efter godtyckliga förändringar i programtillståndet är dock svårt på grund av det extremt stora sökutrymmet. I detta dokument visar vi att genom att med våld byta ut ett predikats resultat vid körtiden och ändra kontrollflödet, kan programtillståndet inte bara ändras billigt, utan dessutom är det ofta möjligt att få programutförandet till ett framgångsrikt slutförande (dvs program producerar önskad utmatning). Genom att undersöka det växlade predikatet, som också kallas det kritiska predikatet, kan orsaken till felet sedan identifieras. Eftersom resultatet av en filial endast kan vara sant eller falskt, är antalet modifierade tillstånd som blir resultatet av bytet mycket mindre än vad som är möjligt genom godtyckliga statsförändringar. Således är det möjligt att automatiskt söka genom modifierade tillstånd för att hitta en som leder till rätt utdata. Vi har utvecklat en implementation baserad på dynamisk instrumentering för att utföra denna sökning genom programmet re-execution - programmet utförs från början och ett predikat resultat ändras för att producera den önskade förändringen i kontrollflödet. För att utvärdera vårt tillvägagångssätt, försökte vi vår teknik på flera rapporterade buggar för ett antal UNIX verktygsprogram. Vår teknik befanns vara praktisk (dvs. acceptabel i tid) och effektiv (dvs. vi kunde automatiskt identifiera kritiska predikat). Dessutom visar vi att dubbelriktade dynamiska skivor av kritiska predikat fångar den felaktiga koden.
I ett senare arbete REF beräknar de en dubbelriktad dynamisk skiva för kritiska predikat.
Locating faults through automated predicate switching
{'venue': "ICSE '06", 'journal': None, 'mag_field_of_study': ['Computer Science']}