De meeste programmeerfouten zijn logische fouten. Dit zijn doordat het programma niet doet wat je dacht dat het zou doen. Het programma voert mooi zijn taken uit maar toch kan er onverwacht een fout opduiken.
Als er een fout opduikt ziet die meestal als volgt uit:
De eerste paar keer berichten werken zoals het moet maar plots krijg je deze fout. Soms na 3 keer en sommige keren zelfs niet. Dit komt doordat deze fout aan geluk/kans gekoppeld is.
Dit is nu nog weinig code maar als het veel code is die gebruikt maakt van verschillende klassen of methodes kan je door de bomen het bos niet meer zien.
Visual Studio biedt je de mogelijkheid om je code te testen en zelfs om de kans (gedeeltelijk) te kunnen manipuleren. De eerste manier van debuggen wordt hierboven al getoond. VS (afkorting voor Visual Studio) stopt met het verder uitvoeren van de code en toont de regel waarop de fout staat. Het is soms nodig om te weten in welke omstandigheden de fout is voorgekomen. Nu wil ik bijvoorbeeld weten op welke waarde i staat. Dit kan door met de muis op een variabele te blijven staan: In dit geval heeft i de waarde 6
Als er een berekening gebeurt kan dit worden geselecteerd. Dan wordt de uitkomst van de berekening in het menu getoond:
Deze manier kan ook worden gebruikt voor objecten. De properties en variabelen zijn zo ook zichtbaar. Als er een '+' staat kan dit open worden geklapt er met de muis op te staan of met het pijltje naar rechts (toetsenbord). Het dichtklappen gebeurt door het menu te verlaten of door pijltje naar links (toetsenbord).
Dit is 1 deel van debuggen maar het is nog veel krachtiger. Je moet niet altijd wachten tot er een fout voorkomt om dit te kunnen bekijken. Je kan namelijk zelf beslissen waar de code moet stoppen (pauzeren). Dit doe je door een 'breakpoint' te plaatsen. Het gemakkelijkste is om in de linker rand te klikken ter hoogte van de gewenste regel. Met het toetsenbord kan dit door op de gewenste regel te staan en op F9 te duwen. Dezelfde manier wordt gebruikt om een breakpoint te verwijderen. Het toevoegen en verwijderen kan op ieder moment gebeuren: tijdens het schrijven van de code, tijdens het pauzeren van code en zelfs als het programma gewoon bezig is.
Een toolbar die gebruikt kan worden tijdens het debuggen is 'Debug' (View->Toolbar->Debug om het zichtbaar te maken) en zal er voornamelijk als volgt uitzien: Tijdens het lopen van het programma: Tijdens het pauzeren van het programma:
Met 'Continue ' laat je het programma verder werken. Met 'Break All ' pauzeer je het programma met wat het nu bezig is. Dit kan gemakkelijk zijn als het programma druk bezig is met iets. De huidige regel wordt dan groen aangegeven. Verder doen gebeurt met Continue of debuggen gebeurt met Step into (zie verder) Met 'Stop Debugging ' stop je het programma en keer je terug naar het bewerken van je code. Met 'Restart ' stop je het programma en start je het meteen opnieuw op. De betekenis van de gele pijl heb ik nog niet ondervonden dus zal ik het hier niet bespreken.
De volgende 3 knoppen zijn belangrijk tijdens het debuggen: 'Step into ' zorgt ervoor dat je de eerstvolgende code uitvoert. Als het een methode-oproep is zal de deze methode worden gedebugd (gele lijn verspringt naar de methode). Met dit kan je de volgorde van je code bekijken. Voorlopig is dit enkel zelfgeschreven code. Naar het schijnt zal in een volgende versie van VS mogelijk zijn om dieper in de code van .NET zelf te debuggen. De sneltoets is meestal F8 maar kan in sommige gevallen F11 zijn. Dit is te zien in de tooltip van de knop. 'Step over ' is ongeveer hetzelfde als 'Step into' met als verschil dat er enkel in de huidige methode wordt gestapt. De details van aangeroepen methodes worden niet getoond. Mocht je toch per ongeluk in een methode verzeild zijn geraakt kan 'Step out ' je doen terugkeren naar de oproepende methode.
Met deze knoppen kan je dieper treden in je code en de logica. Maar er is nog een stuk aan het debuggen dat het gemakkelijker maakt, namelijk Watch. Een Watch is informatie over een variabele. In het eerste deel is dit al getoond maar een Watch is uitgebreider. Het is niet zo vluchtig en je kan zelfs variabelen aanpassen. Als je een variabele selecteerd en rechts klikt zie je in het menu 2 keer Watch staan: 'Add Watch' en 'QuickWatch'. 'QuickWatch' toont volgend venster: Rechts klikken op een regel toont volgend contextmenu: 'Copy' kopieert de naam, waarde en type 'Edit Value' zorgt dat je de waarde van de variabele kan wijzigen. Dubbelklikken op een waarde heeft hetzelfde effect. 'Add Watch' voegt het toe aan de Watch-lijst
In het veld Expression kan je een methode-aanroep of een berekening invullen. Intellisence (de lijst met mogelijke variabelen) is actief en kan je helpen. Na het klikken op Reevaluate wordt de expressie uitgevoerd en het resultaat eronder getoond. Let wel, een methode kan wel worden opgeroepen maar om nog eens resultaat te krijgen moet je nog eens expliciet laten uitvoeren (wat niet zo is met properties). Dit is zo omdat een property meestal enkel een waarde teruggeeft terwijl een methode een berekening kan doen en variabelen kan wijzigen zodat er een volgende keer een andere uitvoer mogelijk is.
De Watch (waar je variabelen aan toewijst) wordt meestal onder je code geplaatst en kan er als volgt uitzien: Als je het hebt gesloten kan je het oproepen via Debug->Windows->Watch->Watch1
Tijdens het debuggen wordt iedere variabele met dezelfde naam in dit venster getoond. Als een variabele niet beschikbaar is, bijvoorbeeld omdat je in een andere methode zit, wordt de rij grijs weergegeven In de lege rij onderaan kan je zelf nieuwe variabelen toevoegen, geholpen door de intellicense. Als een waarde door je programma is gewijzigd wordt het rood weergegeven. Ook is het mogelijk om een waarde aan te passen.
Hopelijk is deze uitleg verhelderend en zal je zo sommige problemen zelf kunnen oplossen.
Supervos.
PS: Nog 2 dingen die mogelijk zijn maar met wijsheid moeten worden gebruikt: De gele pijl kan je verplaatsen naar een andere regel. Zo kan je een paar regels terugkeren. Alle berekeningen die al zijn gebeurd blijven behouden. Als je aan het debuggen bent kan je code wijzigen of toevoegen. Als code een grijze achtergrond heeft kan dit niet worden gewijzigd en bepaalde nieuwe code kan ervoor zorgen dat je programma opnieuw moet worden opgestart. Deze code wordt met een grijze streep onderlijnd en als er een nieuwe stap wordt gedaan (of continue) zal VS melden dat het programma opnieuw moet opstarten.
3016 x gelezen
Commentaar
deWolf - 24 Jun 2009 - 01:05
Nog iets intressants over breakpoints in Visual Studio voor het debuggen op vb-voorbeelden.be Link