Symbolisk körning används med framgång för att automatiskt testa statiskt sammanställd kod [4, 7, 9, 15]. Allt fler system och tillämpningar skrivs dock på dynamiska tolkade språk som Python. Att bygga en ny symbolisk exekvering motor är en monumental ansträngning, och så håller den uppdaterad när målspråket utvecklas. Dessutom leder tvetydiga språkspecifikationer till att de genomförs i en symbolisk exekveringsmotor som potentiellt skiljer sig från produktionstolken på subtila sätt. Vi tar itu med dessa utmaningar genom att vända på problemet och använda tolken själv som en specifikation av språksemantiken. Vi presenterar ett recept och verktyg (kallas CHEF) för att förvandla en vaniljtolk till ett ljud och komplett symbolisk exekvering motor. CHEF kör symboliskt målprogrammet genom att symboliskt köra tolkens binära samtidigt som man utnyttjar inferred kunskap om programmets högnivåstruktur. Med hjälp av CHEF utvecklade vi en symbolisk exekveringsmotor för Python på 5 persondagar och en för Lua på 3 persondagar. De erbjuder fullständig och trogen täckning av språkfunktioner på ett sätt som håller jämna steg med framtida språkversioner till nästan noll kostnad. CHEF tillverkade motorer är upp till 1000× mer performant än om direkt köra tolken symboliskt utan CHEF.
Chef REF producerar symboliska utvärderare för tolkade språk genom att symboliskt utföra standardtolken själv på målprogrammet.
Prototyping symbolic execution engines for interpreted languages
{'venue': "ASPLOS '14", 'journal': None, 'mag_field_of_study': ['Computer Science']}