VBiB/ACCB.net - Visual Basic in België | .net Ineta User Group  
(login to hide)
Hoofdmenu

Advertenties

Het Computer Winkeltje HCW


Evenementen

Tips en tricks
U bevindt zich > Tips en Tricks > VB .net > Algemene tips > Componenten > Een programma debuggen
Ik wil een tip ingeven

Tip: Een programma debuggen
Supervos - 13 Jun 2008 - 16:22

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:
Fout in programma aangeduid door Visual Studio

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:
i met als waarde 6
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:
i * 100 = 600

Deze manier kan ook worden gebruikt voor objecten. De properties en variabelen zijn zo ook zichtbaar.
Inhoud sender
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: Inactieve werkbalk 'Debug'
Tijdens het pauzeren van het programma: Actieve werkbalk 'Debug'

Met 'Continue Continue: Groene playknop' laat je het programma verder werken.
Met 'Break All Break All: blauwe pauzeknop' 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 Debugging: Blauwe stop-knop (vierkant)' stop je het programma en keer je terug naar het bewerken van je code.
Met 'Restart Restart: Blauwe stopknop (vierkant) met een witte pijl erin' 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 Step into: ga naar de onderliggende code' 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 Step over: De functie overslaan' 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 Step out: keer terug naar de oproepende code' 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:
QuickWatch: Variabele i bekijken
Rechts klikken op een regel toont volgend contextmenu:
menu na rechtsklikken op een waarde in de QuickWatch
'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:
Watch: venster onder je code
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

U dient ingelogd te zijn om commentaar te posten.
 

Er zijn in totaal 102 tips gepost.

 

 
Postnuke - ADODB Database - PHP 4/5 - pnPhpBB2 - Hosting bij Openminds
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno 21-12-2000)
vbib.be gestart op 1/03/06 (extra vanaf 1/09: vbnet.be en vbdotnet.be)
VBiB is gerelateerd met wintips.be

Nieuwsbrief RSS Feed: backend.php