title: Debugger
text: 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:
   Chrome JavaScript-debugger van Google
   Firefox JavaScript-debugger van Mozilla
   GDB - de GNU-debugger
   LLDB - de LLVM-debugger
   Visual Studio-debugger van Microsoft
   Valgrind
   WinDbg
  
  Debuggen