Debuggen met breakpoints in Visual Studio

Geschreven door: op maandag 21 juni 2021

Leestijd: 3 minuten

Het ontwikkelen van applicaties bestaat voor een groot gedeelte uit het oplossen van problemen en het vinden en verhelpen van vreemde bugs. Er zijn hier veel hulpmiddelen en strategieën voor. Je kan foutmeldingen loggen via speciale tools daarvoor, of foutmeldingen mailen; je kan debug messages printen in de applicatie, die je kan lezen terwijl het product draait.

In de meeste IDE's, waaronder ook in Visual Studio, kan je door de code van een applicatie stappen en breakpoints zetten. Visual Studio bevat een aantal mogelijkheden waarmee het debuggen nog gemakkelijker wordt gemaakt.

Breakpoints

Breakpoints plaats je met de muis door naast een regel te klikken of door F9 in te toetsen. Op dezelfde manier verwijder je de breakpoint. 

Voorbeeldcode:

        static void Main(string[] args)
        {
            int j = 10;
            for (var i = 0; i < j; i++)
            {
                doeIetsMet(i);
            }

            nogEenFunction();
        }

        private static void doeIetsMet(int i)
        {
            var x = i;
        }

        private static void nogEenFunction()
        {
            doeIetsMet(51);
        }

De code stopt als de breakpoint bereikt wordt. Soms wil je echter niet dat de code altijd stopt, maar alleen onder bepaalde voorwaarden. Je kan hiervoor de optie Conditions gebruiken en dan Conditional Expression. Bijvoorbeeld alleen stoppen als j gelijk is aan 10. Je kan elke boolean expressie gebruiken.

blog-breakpoing-1.png

Met de optie Hit Count kan je in een loop bij een breakpoint stoppen als het aantal doorlopen items gelijk is aan, een meervoud van of groter dan of gelijk aan een bepaald getal is. Dus elke 3 iteraties stoppen, bijvoorbeeld.

blog-breakpoing-2.png

Naast Conditions kan je ook Actions instellen. Dat zijn handelingen die uitgevoerd worden wanneer de code breakpoint bereikt en als een conditie is ingesteld, alleen voorwaardelijk. Je kan tekst loggen in het debug-venster op de manier en in die tekst variabelen verwerken.

blog-breakpoing-3.png

Niet alleen kan je die variabelen verwerken in je tekst, maar omdat de tekst als code wordt geevalueerd, kan je ze via deze functionaliteit ook dynamisch aanpassen. En op die manier kan je een eenvoudig je code debuggen, zonder de code zelf aan te passen.

blog-breakpoing-4.png

Heb je een aantal condities en acties ingesteld, dan ben je die kwijt als je een breakpoint verwijdert. Je kan een breakpoint behouden maar uitschakelen door er met de rechtermuisknop op te klikken en daarvoor te kiezen of via Ctrl-F9.

Voorbeeld van gebruik condities en acties

Stel je voor dat een bepaalde functie een probleem geeft (maar niet per se een foutmelding) wanneer een waarde meer dan 50 is. Deze functie wordt echter door verschillende andere functies aangeroepen en misschien door verschillende threads. Zie wederom de voorbeeldcode hierboven. Lastig te debuggen.

We kunnen het debuggen gemakkelijker maken door een breakpoint te zetten in doeIetsMet en de conditie mee te geven van _i > 50_ en als actie zet je dan $CALLSTACK erin. In de Debug Window staat nu de callstack en weet je dus dat de problematische waarde vanuit de functie nogEenFunctie komt.

blog-breakpoing-5.png

 

 


Andere blogartikelen

Bel 072 5345 888
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator:
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book »

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book ›