sort: >xyz

2005/07/0

ToolView

dePTSer

AskIgor
http://Albert.mietus.nl/read.IT/ToolView/askIgor.html

Wie vindt 'debuggen' leuk? Niemand toch. Zou het niet fijn zijn als de computer dat zelf kan? Met 'askIgor' kan dat! Met 'Delta debugging' vergelijkt het een 'goede' en een 'foute' uitvoering van het te testen programma. Het doet dat telkens opnieuw en stap voor stap, totdat er een minimaal verschil is. Zo blijft alleen over wat het programma fout laat gaan. Het bepaalt dan wat de relevante variables zijn en dan weet jij bijna wat de fout is.

Drie minuutjes

Het klinkt als veel werk: de waarde van variables van een lopend programma bepalen. En dat twee keer en ze dan onderling nog vergelijken, waarbij pointers natuurlijk bijzonder zijn. Toch kan het. Dit is immers de kern van debuggen. Of doen we iets anders met de vele printf'jes? Natuurlijk, het kan iets sneller met gdb. Maar het blijft veel werk. Terwijl het ook in drie minuutjes kan!

Automatisch

De aanpak van askIgor is gebaseerd op delta debugging; een relatief nieuwe manier van automatisch testen. Het basisidee is hierboven geschetst, al is de theoretische onderbouwing completer en complexer. Het voordeel van deze aanpak is dat het te automatiseren is. Het bepalen van een typische 'diagnose' kost daardoor slechts 3 minuutjes. Natuurlijk, heel complexe programma's duren langer. Voor gcc-2.95.2 was anderhalf uur nodig. Toen was een (per definitie, onjuiste) lus in een rtl-tree gevonden, die af en toe voor een coredump zorgde.

www.AskIgor.org

Dat de aanpak te automatiseren is, is aardig. Nog aardiger is de website: iedereen kan deze aanpak daar proberen. Het enige wat nodig is: een executable met (gdb) debugging informatie en twee sets input. Eentje waarmee de fout niet optreedt en eentje die de bug wel triggert. De rest gaat automatisch.

Werken met AskIgor is eenvoudig. Maar zo simpel als een programma uploaden en lezen wat de bug is, is niet mogelijk. Igor moet namelijk verteld worden wanneer het fout gegaan is. Door een coredump of een exitcode bijvoorbeeld. Ook moet de fout herhaalbaar zijn. En (Ask)Igor stopt als het weet wat er fout gaat. Dat laat het zien: bij de X-ste aanroep van F, als variabele V waarde W heeft, dan gebeurt het. Dan gaan het fout.

Dan is de fout nog niet gevonden, laat staan opgelost. Maar met een beetje ervaring weet je dan voldoende. Meestal blijven er maar een handvol regels over, waar ergens de bug te vinden is.

Testen

Hoewel het mogelijk is om zomaar een programma te 'debuggen', zal het vaak handiger zijn om (grote) delen van het programma te isoleren en te voorzien van de 'testdriver'. Dat maakt het makelijker om aan de voorwaarden te voldoen.

Zo'n aanpak met testdrivers en geïsoleerde stukken functionaliteit kennen we natuurlijk al: het is een bekende testaanpak (Zie ook 'Check' en 'Unit Test'.) Igor kan daar een goede uitbreiding op zijn. De unit- of moduletest bepaalt of de module correct is. Zo niet, dan kan Igor zoeken naar wat er fout gaat. Gelukkig blijft er een programmeur nodig om de fout te maken.

Rubriek: ToolView

Elke ingenieur gebruikt tools en ieder een heeft zijn eigen voorkeur; vaak gebaseerd op wat er toevallig als eerste beschikbaar was. Zo ook de ICT ingenieur. Ook hij gebruikt tools, softwaretools wel te verstaan. Daarvan zijn er oneindig veel, waardoor kiezen erg moeilijk is. Veel handige tools worden niet gebruikt, eenvoudigweg omdat niet bekend was dat er een tool is, specifiek voor dat probleem.

Deze rubriek stelt degelijke, handige tools voor. Voor meer info, neem contact op:
albert

Door & more

Het tool 'Igor' en de website AskIgor' zijn het resultaat van universitair onderzoek, door o.a. 'Andreas Zeller'. Die kennen we ook van het 'DDD' debug-tool.

Igor betekent 'boog strijder'; Maar Igor is ook de slaaf van Frankenstein. De ontwikkelaars roepen: "Igor, Go for bugs" om de strijd aan te gaan met de lastigste, saaiste doelen.

Hoewel er ooit patent aangevraagd is, is (Ask)Igor vrij te gebruiken. De aanvraag heeft men laten verlopen. Men is 'tegen' software patenten. Via de website zijn uit praktische overwegingen alleen i386-Linux executables mogelijk. Verder moet het programma in 'batch' en zonder 'X11' werken. Wil je meer, dan kan je 'Igor' ook downloaden. Maar werken met de website is leuker.

Kijk op http://www.AskIgor.org om het eens te proberen, maar ook voor meer informatie.

Update

Inmiddels is de on-line versie van Igor niet meer beschikbaar; het tool zelf echter wel. Bovenstaande link verwijst nu naar: http://www.st.cs.uni-saarland.de/askigor/; en al zijn de links zoals 'downloads' slecht zichtbaar, ze werken wel.


Download

De orginele publicatie is beschikbaar in pdf: Download the orginal pdf"/>