Debugger

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 wordt afgebroken 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, of breakpoint, zetten zodat de uitvoering van een programma op dat punt wordt onderbroken om daarna weer door te kunnen gaan. Hierdoor kunnen de waarden van variabelen op dat punt worden bekeken.
  • 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 assembleertaal 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 meer 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.

Lijst van debuggers

Veelgebruikte debuggers zijn: