C#:
Een debugger gebruiken
Hoe te:
Stel je voor dat je een klein programma hebt dat zich niet goed gedraagt:
static void Main()
{
int resultaat = Som(1, 2);
Console.WriteLine(resultaat);
}
static int Som(int a, int b)
{
return a + a; // Oeps, moet a + b zijn
}
Gebruikmakend van de debugger van Visual Studio, stel een breekpunt in door te klikken op de linker marge naast return a + a;
. Wanneer je het programma uitvoert (met F5), zal de uitvoering daar pauzeren. Beweeg over variabelen om hun waarden te inspecteren, of gebruik het Immediate Window om uitdrukkingen te evalueren. Je zult zien dat a
1 is en b
2, maar a + a
is niet onze verwachte som. Verander het naar a + b
, ga verder met uitvoeren (F5), en voila, de console geeft 3 uit.
Diepgaand
De geschiedenis van debugging gaat helemaal terug naar de jaren 1940 toen een echte bug (een mot) werd gevonden in een vroege computer. De debuggers van tegenwoordig, zoals die in Visual Studio, bieden een reeks krachtige functies, waaronder breekpunten, stap-voor-stap uitvoering, watch windows, en meer.
Alternatieven voor de debugger van Visual Studio zijn onder andere open-source opties zoals GDB voor C-stijl talen of pdb voor Python, en cross-platform IDE’s zoals JetBrains Rider of VS Code die debuggingtools bieden voor C# en andere talen.
Wanneer je duikt in de implementatie van een debugger, kijk je naar een programma dat zich hecht aan het proces van je applicatie. Het interpreteert machinecode, beheert de status van het geheugen, en controleert de uitvoeringsstroom. Dit is zware kost die cruciaal is voor effectieve debugging, wat de reden is waarom de debugmodus vaak langzamer loopt dan de release modus waar deze haakjes niet bestaan.