Vylepšení analýzy živých proměnných pomocí points-to analýzy

Loading...
Thumbnail Image
Date
ORCID
Mark
B
Journal Title
Journal ISSN
Volume Title
Publisher
Vysoké učení technické v Brně. Fakulta informačních technologií
Abstract
Jazyky, jako je C, hojně využívají práce s ukazateli. Implemetace dynamických datových struktur vázaných ukazateli a operací nad nimi však není jednoduchá - významně zvyšuje rizika zanášení chyb do zdrojových kódů. Jedna z cest, jakými lze eliminovat množství těchto chyb, je použití statické analýzy. Tato práce se tedy zabývá vylepšením architektury Code Listner, která nabízí rozhraní pro tvorbu statických analyzátorů. Vlastností tohoto rozhraní je, že poskytuje takovému analyzátoru k rozboru potřebné informace o programu - ku příkladu databázi proměnných, graf toku řízení čí graf volání funkcí. Součástí implementace Code Listeneru je také algoritmus pro analýzu živých proměnných, umožňující odstranit, neboli zabít proměnné, které nejsou v daném místě grafu toku řízení potřeba. Původní algoritmus ale nedovedl z důvodu bezpečnosti zabít žádné proměnné, na něž byla kdekoliv ve zdrojovém kódu vzata adresa. Předpokládalo se, že taková proměnná může být zpřístupněna pomocí reference kdekoliv v programu. Cílem práce tedy bylo navrhnout a implementovat algoritmus pro points-to analýzu, která dovede vyloučit existenci některých referencí v daném kontextu programu a umožní tedy zefektivnit analýzu živých proměnných.
Languages such as C use pointers very heavily. Implementation of operations on dynamically linked structures is, however, quite difficult. This can cause the programmer to make more mistakes than usual. One method for dealing with this situation is to use the static analysis tools. This thesis elaborates on the extension to the Code Listener architecture which is an interface for building static analysis tools. Code Listener is able to construct a call-graph or a control flow graph for a given source code and send it to the analyzing tool. One ability of the architecture is that it can conduct the live variable analysis internally. It detects places in the control flow graph where some subset of variables may be killed. The problem was that every variable for which a pointer address was assigned could not been killed, before. This decision had been made because there was no assurance that the variable could never been used through the pointer. So the goal of this work was to design and incorporate a points-to analysis which is able to exclude some references from the set of considered pointers to improve the live variable analysis.
Description
Citation
RAISKUP, P. Vylepšení analýzy živých proměnných pomocí points-to analýzy [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2012.
Document type
Document version
Date of access to the full text
Language of document
cs
Study field
Inteligentní systémy
Comittee
doc. Ing. František Zbořil, CSc. (předseda) doc. Ing. Vladimír Drábek, CSc. (místopředseda) Ing. Vladimír Bartík, Ph.D. (člen) Ing. Martin Hrubý, Ph.D. (člen) doc. Ing. Vladimír Janoušek, Ph.D. (člen) doc. Ing. Stanislav Racek, CSc. (člen)
Date of acceptance
2012-06-15
Defence
Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se pak seznámila s hodnocením vedoucího a posudkem oponenta práce. Komise měla výhrady k nedostatečnému počtu provedených a prezentovaných testů. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm velmi dobře (B). Otázky u obhajoby: bez otázek
Result of defence
práce byla úspěšně obhájena
Document licence
Standardní licenční smlouva - přístup k plnému textu bez omezení
DOI
Collections
Citace PRO