Grafische voorstelling van het programmaverloop

Promotor Koen De Bosschere
Begeleider 1: Ludo Van Put
Begeleider 2: Bruno De Bus
Aantal studenten: 1 of 2
Richting: Ir. in de computerwetenschappen, Lic. in de informatica

Contactpersoon: Ludo Van Put

Als je een kijkje neemt op de pagina's over het grafische tool Lancet en het instrumentatieraamwerk FIT, dan merk je op het eerste zicht geen nauw verband tussen de twee projecten. Het is evident dat beide projecten gebaseerd zijn op het Diablo raamwerk. Het is echter zo dat je door een combinatie van Lancet en FIT aan 'puntsgewijze' instrumentatie kan doen. Je kan de controleverloopgrafen van een programma bekijken en Lancet laat je toe om voor of na een willekeurige instructie instrumentatiecode toe te voegen. Hier maakt Lancet gebruik van de mogelijkheden van FIT.

In deze scriptie willen we de situatie omdraaien. Je zou gebruik kunnen maken van de grafische omgeving om visueel voor te stellen wat er in een uitgevoerd programma gebeurd. Er bestaan momenteel geen tools die de uitvoering van een programma kunnen voorstellen aan de hand van een graafvoorstelling van het programma. Concreet zouden we graag in Lancet instructie per instructie tonen hoe een programma uitgevoerd wordt, net zoals men dat op een textuele manier kan in een debugger.

Wanneer we Lancet uitbreiden en een deel van de functionaliteit beschikbaar maken in een API, beschikken we over een waardevol tool dat toelaat om op een meer begrijpelijke manier de uitvoering van een programma te bestuderen. We kunnen dan het bestaande instrumentatieraamwerk FIT gebruiken om Lancet aan te sturen en stap voor stap door de uitvoering van een programma te loodsen. Het is echter niet noodzakelijk om FIT te gaan gebruiken. De GNU debugger, gdb, is een erg stabiele, krachtige én open source debugger. Deze debugger kan ook met andere programma communiceren waardoor hij ook geschikt is om Lancet aan te sturen.

Om de uitvoering van een programma nog meer te verhelderen, kan je ook gebruik maken van debuginformatie. Je zou zo een gecombineerde kijk kunnen geven op zowel de uitgevoerde machine-instructie in Lancet, als de op dat moment uitgevoerde broncode. Het inlezen van debuginformatie en koppelen van instructies met broncode is reeds beschikbaar.

Wanneer je kiest voor deze scriptie, dan kies je voor een combinatie van implementatiewerk en onderzoek. Kennis van de programmeertaal C en het Linux besturingssysteem is een voordeel, maar geen noodzaak.

Indien je slaagt in de opzet van de scriptie, dan komen je resultaten in aanmerking voor publicatie op internationale wetenschappelijke forums. Mogelijke conferenties zijn bijvoorbeeld: AADEBUG, International Workshop on Program Comprehension, Working Conference on Reverse Engineering, ...