Program skrivna på osäkra språk som C och C++ lider ofta av fel som buffertspill, dinglar pekare och minnesläckage. Dynamiska analysverktyg som Valgrind kan upptäcka dessa fel, men deras overhead-huvudsakligen på grund av kostnaden för att instrumentera varje minne läsa och skriva-gör dem för tungviktig för användning i utplacerade applikationer och gör testning med dem smärtsamt långsam. Resultatet är att mycket utplacerad programvara fortfarande är mottaglig för dessa buggar, som är notoriskt svåra att spåra. I detta dokument presenteras evidensbaserad dynamisk analys, en metod som möjliggör dessa analyser samtidigt som minimala omkostnader (under 5 %), vilket gör det praktiskt för första gången att utföra dessa analyser i utplacerade miljöer. Den viktigaste insikten i evidensbaserad dynamisk analys är att det för en klass av fel är möjligt att se till att bevis som inträffat någon gång i det förflutna förblir för senare upptäckt. Evidensbaserad dynamisk analys gör det möjligt för utförandet att fortsätta i nästan full fart fram till slutet av en epok (t.ex. en tungviktssystemanrop). Den undersöker sedan programtillståndet för att kontrollera bevis för att ett fel uppstod någon gång under den epoken. I så fall rullar den tillbaka utförandet och kör om koden med instrumentering aktiverad för att identifiera felet. Vi presenterar DOUBLETAKE, en prototyp evidensbaserad dynamisk analysram. DOUBLETAKE är praktiskt och enkelt att distribuera, kräver varken anpassad hårdvara, kompilator eller operativsystem stöd. Vi demonstrerar DOUBLETAKEs generalitet och effektivitet genom att bygga dynamiska analyser som hittar buffertspill, minnesanvändning-efter-fria fel och minnesläckage. Vår utvärdering visar att DOUBLETAKE är effektiv, införa mindre än 5% overhead i genomsnitt, vilket gör det snabbast sådana system hittills.
Liu m.fl. föreslog en lätt dynamisk analys ram som heter DOUBLETAKE för att hitta buffertspill, minnesanvändning-efter-fri fel, och minne läcker REF.
DoubleTake: fast and precise error detection via evidence-based dynamic analysis
{'venue': "ICSE '16", 'journal': None, 'mag_field_of_study': ['Computer Science']}