Staatilise analüsaatori Goblint tulemuste visualiseerimine

Date

2017

Journal Title

Journal ISSN

Volume Title

Publisher

Abstract

Goblint on staatiline andmejooksude analüsaator mitmelõimelistestele C-keelsetele programmidele. Käesoleva töö eesmärk on analüüsida ja tõsta Goblinti kasutatavust. Analüüsi käigus leitakse parandatavad aspektid ja väljundi parema visualiseerimise loogika. Analüüsi põhjal on loodud programm, mis võtab sisendiks esialgse Goblinti väljundi ja lihtsustab seda, tuues välja olulisema ja kaotades vähem olulise. Väljundi lihtsustamiseks leitakse tõekspidamistele vastavad ja nendest hälbivad kohad, kusjuures tõekspidamine on siinkohal komplekt mäluaadressi poole pöördumisest ja selle juures võetud lukust. Tulemused saab järjestada tõekspidamise kindluse järgi. Seeläbi saab esile tuua kõige silmapaistvamad ja kõige kergemini parandatavad vead. Lisaks sellele antakse kogu väljundile kompaktsem kuju, et selle lugemisele kuluks vähem aega. Uus tulemus on esialgsega võrreldes rohkem kui kolmandiku võrra lühem ja annab edasi programmeerijale olulist informatsiooni, mida muidu oleks pidanud käsitsi eraldama.
Goblint is a static data race analyzer for multithreaded programs written in C. The goal of this thesis is to improve the usability of Goblint by improving the readability of its output. A strategy for better race warning representation was found and implemented in a separate tool that simplifies Goblint's output. Beliefs are formed based on observed pairings of memory accesses with associated locks. The results are then sorted according to the strength of the belief, prioritizing the most apparent mistakes that violate strong beliefs. The new result is less than a third of the original, and more importantly, beliefs are used to pinpoint the access that is most likely the cause of a potential race. This is a significant improvement over the current Goblint output, which reports all accesses and requires the user to find faulty locations manually.

Description

Keywords

Citation