Debugger

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Winpdb debugt zichzelf

Een debugger is een computerprogramma dat gebruikt wordt om andere computerprogramma's te debuggen, oftewel de oorzaak van een bug te achterhalen.

Als het te verbeteren programma op een onverwachte manier afgebroken wordt vanwege een fout, laat de debugger, als het een source-level of symbolische debugger is, de positie in de broncode zien waar de fout optreedt.

Over het algemeen bieden debuggers meer geavanceerde functies zoals:

  • stap voor stap een programma uitvoeren
  • een breekpunt (breakpoint) zetten zodat de uitvoering van een programma op dat punt gepauzeerd wordt; dit kan worden gebruikt om waarden van variabelen op dat punt in te zien
  • een trace zetten bij het zogenaamde watchen van variabelen
  • de call stack bekijken
  • het tijdens het debuggen opvragen van de waarde van een variabele
  • het tijdens het debuggen wijzigen van de waarde van een variabele
  • het tijdens het debuggen wijzigen van de code
  • een debugger voor een low-level-programma (assembly) heeft ook vaak de mogelijkheid om de inhoud van processorregisters of geheugenplaatsen op te vragen of te wijzigen

Een debugger maakt het opsporen van fouten in een programma gemakkelijker en de beschikbaarheid van een goede debugger voor een bepaalde programmeertaal en platform kan een belangrijk argument zijn om deze taal te gebruiken. Het gebruiken van een debugger heeft wel gevolgen voor de manier waarop het programma dat gedebugd wordt zich gedraagt. Met name de timing van de uitvoering van bepaalde stappen kan afwijken van de normale uitvoering. Dit maakt het met name lastig om probleemoorzaken te vinden in complexe programma's met meerdere threads.

Een alternatief voor het gebruiken van een debugger is het plaatsen van logginginstructies in een programma, zodat tijdens de uitvoering van een programma inzichtelijk wordt wat de waarden van bepaalde variabelen zijn. Deze methode is omslachtig en heeft als belangrijk nadeel dat voor elke te volgen variabele een aparte loginstructie moet worden opgenomen, tenzij de gebruikte programmeertaal daar speciale voorzieningen voor heeft, zoals dat bijvoorbeeld voor COBOL geldt.