Abstract Context: I C är lågnivåfel, såsom buffertspill och användning efter frigörning, ett stort problem, eftersom de orsakar säkerhetssårbarheter och svåra att hitta fel. C saknar automatiska kontroller, och programmerare kan inte använda defensiva programmeringstekniker eftersom objekt (t.ex., matriser eller structs) saknar run-time information om gränser, livstid, och typer. Förfrågan: Aktuella metoder för att hantera fel på låg nivå inkluderar dynamiska verktyg, såsom gränser eller typkontroller, som kontrollerar vissa åtgärder under programmets genomförande. Om de upptäcker ett fel, avbryter de normalt avrättningen. Även om de spårar information om run-time som en del av sin körtid, exponerar de inte denna information för programmerare. Tillvägagångssätt: Vi skapade ett introspektion gränssnitt som gör det möjligt för C programmerare att få tillgång till run-time information och att fråga objektgränser, objektlivslängder, objekttyper, och information om variadiska argument. Detta gör det möjligt för biblioteksförfattare att kontrollera ogiltiga inmatnings- eller programtillstånd och därmed till exempel att genomföra anpassad felhantering som upprätthåller systemtillgänglighet och inte slutar på godartade fel. Eftersom vi utgår från att introspektion används tillsammans med ett dynamiskt verktyg som implementerar automatiska kontroller fortsätter fel som inte hanteras i applikationslogiken att orsaka att det dynamiska verktyget avbryter utförandet. Kunskap: Genom att använda introspektiongränssnittet implementerade vi en robustare, källkompatibel version av C-standardbiblioteket som validerar parametrar för dess funktioner. Bibliotekets funktioner reagerar på annars odefinierat beteende; till exempel kan de upptäcka smygande brister, hantera oavslutade strängar, kontrollera formatsträngar argument, och ställa in errno när de upptäcker godartade användningsfel. Grounding: Befintliga dynamiska verktyg upprätthåller run-time information som kan användas för att genomföra introspektion gränssnittet, och vi visar dess genomförande i Safe Sulong, en tolk och dynamisk felsökning verktyg för C som körs på en Java Virtual Machine och därmed enkelt kan avslöja relevant run-time information. Betydelse: Att använda introspektion i användarkod är en ny metod för att ta itu med det långvariga problemet med fel på låg nivå i C. Eftersom nya metoder sänker prestanda overhead för drifttid information underhåll, skulle användningen av dynamiska körtider för C kunna bli vanligare, vilket i slutändan skulle kunna underlätta en mer utbredd implementering av en sådan introspektion gränssnitt. Datorsystem organisation → Pålitliga och feltoleranta system och nätverk; Programvara och dess teknik → Språkfunktioner; Felhantering och återvinning; Programvara tillförlitlighet;
Rigger m.fl. REF presenterade ett tillvägagångssätt som gör det möjligt för C-programmerare att utföra explicita sundhetskontroller och att reagera enligt ogiltiga argument eller stater.
Introspection for C and its Applications to Library Robustness
{'venue': 'The Art, Science, and Engineering of Programming, 2018, Vol. 2, Issue 2, Article 4', 'journal': None, 'mag_field_of_study': ['Computer Science']}