‫Welkom terug.
‫In deze video en de volgende video's wil ik je laten zien hoe je debugging in Visual Studio gebruikt
‫en het idee achter debugging is om bugs te verwijderen.
‫En die bugs kunnen soms vrij gemakkelijk te herkennen zijn, want als je het programma eenmaal hebt uitgevoerd en
‫het begint te crashen, weet je, hier heb je een bug, maar soms is het
‫een logische bug, wat betekent dat het niet echt door je ID, maar het moet door u of uw gebruikers worden opgemerkt, die u hopelijk zullen vertellen
‫dat u het moet verbeteren of van deze bug af moet komen.
‫En om u de functionaliteit van foutopsporing in Visual Studio te laten zien of demonstreren, heb ik hier
‫een klein programma gemaakt.
‫Ik heb een kleine tool voorbereid die we hiervoor zullen gebruiken, en de tool wordt een feestvrienden en een
‫witte tool.
‫Dus het idee is dat mijn dochter net drie is geworden en we een klein feestje voor haar hadden en dat ze wat vrienden zou
‫kunnen uitnodigen.
‫En natuurlijk had ze graag haar hele kleuterschool uitgenodigd, maar we mochten maar drie vrienden
‫uitnodigen.
‫Dus nu moest ze beslissen welke vrienden ze wil uitnodigen.
‫En natuurlijk was het een makkelijke omdat er sommige vrienden zijn die ze meer mag dan andere.
‫Maar uiteindelijk weet ik niet wie haar favoriete vrienden zijn.
‫Dus als ik zou moeten beslissen wie ze mag uitnodigen, zou ik een klein programma schrijven dat zegt:
‫oké, iedereen met een korte naam en klaar.
‫Ja, ik hoop dat er in dit geval een aantal kan worden uitgenodigd voor het feest.
‫Dus noemt ze al haar vrienden.
‫En dan ga ik gewoon zeggen, oké, degenen met de kortste namen, de drie met de kortste namen
‫zullen worden uitgenodigd.
‫En dat is het om te horen wat ik heb geschreven.
‫Dat is precies wat het doet.
‫Dus we hebben deze lijst, Frank, Joe, Michelle en Maria, Carlos en Angelina.
‫En we hebben deze methode om vrienden te krijgen, waarvoor een lijst nodig is en het aantal mensen dat uit die lijst
‫moet worden geselecteerd.
‫En dan hebben we een voor elke lus, die gewoon de namen van die mensen of die kinderen opschrijft,
‫in mijn geval op de console.
‫Oke.
‫Niets bijzonders.
‫En het algoritme dat bepaalt wie wordt uitgenodigd en wie niet, is deze methode hier en hier nodigen we een feestvriend uit of
‫we zoeken uit wie een feestvriend is.
‫We hebben natuurlijk een lijst nodig van mensen die we kunnen controleren.
‫Dan kijken we naar de kortste naam en vergelijken we altijd.
‫Dus we gaan door alle mensen in de lijst en we vergelijken altijd.
‫Wordt de naam korter dan een bepaalde lengte of die van de andere mensen?
‫Dus uiteindelijk zal het me de kortste namen geven.
‫Maar hier heb ik met opzet een bug.
‫Oke.
‫Dus ik ga meer dan de kortste naam met die lengte vergelijken.
‫Dus in dit geval neem ik gewoon alle langste namen, ook al wilde ik alle korte
‫namen.
‫Dit is slechts een intentiepakket dat ik heb geïmplementeerd, omdat je nu kunt zien dat dit iets is dat
‫je misschien niet opmerkt.
‫Het is natuurlijk een logische bug.
‫En als we de code uitvoeren, wordt deze nog steeds uitgevoerd.
‫Er zal geen bug-telling zijn, geen fout.
‫Het zal niet crashen.
‫Het zal ons alleen de verkeerde namen geven.
‫Maar nu voor ons, in dit geval, is het gemakkelijk omdat we OK zien, Michelle, Angelina en Carlos zijn
‫lange namen en we kennen de lijst.
‫Dus we weten dat er Joe, Andy en Maria waren en zelfs Frank met kortere namen.
‫Maar om de een of andere reden stonden ze niet op de lijst.
‫Ook al wilden we de kortste mensen hebben of de mensen met de kortste namen.
‫Ik weet niet hoe kort of hoe lang ze zijn, maar dat maakt hier niet uit.
‫Wat belangrijk is, is dat het hier gemakkelijk is omdat we de lijst hier als ontwikkelaar zichtbaar hebben.
‫Maar wat als we de lijst ergens anders vandaan halen?
‫Dus laten we zeggen dat we de lijst uit een XML-bestand halen, dat enorm is met duizenden namen, of we krijgen
‫een lijst van internet en we kunnen de lijst niet zien voordat deze daadwerkelijk door onze software is verwerkt.
‫Dus dan zouden we niet zien dat die namen die ons zijn gegeven in feite niet de kortste namen zijn.
‫OK, maar onze software heeft deze kleine bug en dat is wat de andere methode doet.
‫Het zal terugkeren om zijn naam kort te maken.
‫En dan hebben we dit feestvrienden, meervoud, dat gewoon de lijst teruggeeft van alle
‫mensen met korte namen tot een bepaald bedrag dat we hier een pasje kunnen betalen.
‫Dus we zijn de nummer drie gepasseerd, wat betekent dat we gewoon drie vrienden zouden krijgen.
‫Als we de nummer vier passeren, krijgen we vier vrienden, enzovoort.
‫Oke.
‫Dus dat is eigenlijk wat onze software nu doet.
‫We hebben auto's van handelsingenieurs met Frank, dus we hebben alleen deze lege feestvriendenlijst.
‫En zolang deze lijst met feestvrienden een lagere telling heeft dan het aantal dat is doorgegeven, wij.
‫Zoek gewoon naar de volgende feestvriend, dan gaan we door en voegen we die toe aan de lijst met feestvrienden en
‫wat we doen is dat we verwijderen uit de lijst die aan ons is doorgegeven.
‫Nu, dat is iets dat heel gevaarlijk is.
‫Maar we doen het omdat we een beginnende ontwikkelaar zijn en we doen dit kleine trucje waarbij
‫we denken, oké, nu gaan we gewoon een variabele of een element in de lijst verwijderen.
‫En dat doen we programmatisch.
‫En dan hebben we stap voor stap een korte lijst en hebben we alleen de mensen over om te vergelijken, die nog niet
‫in onze lijst staan.
‫Oke.
‫Dat doen we dus met deze lijst.
‫Verwijder ook al is dat geen schone programmering.
‫We zullen later ook zien hoe we dat kunnen oplossen.
‫Maar voor nu hebben we de software en het werkt.
‫Het werkt helemaal goed.
‫Maar hoe komen we erachter hoe we deze bug kunnen oplossen?
‫Omdat we nu weten dat we een bug hebben en we kunnen natuurlijk onze code doornemen.
‫En in dit geval is het gemakkelijk omdat het maar drieënveertig regels code is.
‫Maar stel je voor dat het duizenden regels code zijn, veel verschillende bestanden en veel verschillende mensen hebben eraan gewerkt.
‫En je kunt er niet achter komen wat de bug is.
‫Wat u nu kunt doen, is dat u de foutopsporingsmogelijkheden van Visual Studio kunt gebruiken en om
‫dit te doen, kunt u gewoon een breekpunt toevoegen.
‫Laten we nu beginnen met een breekpunt.
‫Wij hebben dit.
‫Rode stip hier aan de linkerkant, dus in het algemeen, deze grijze balk die je hier hebt, daar kun
‫je breekpunten toevoegen.
‫U kunt ook een breekpunt toevoegen door 's nachts op te drukken.
‫En dat ga ik niet doen, want negen is mijn video-opnamesoftware aan het pauzeren.
‫Dus ik moet het doen met mijn muis.
‫Dus ik ga naar debug en dan kan ik op het breekpunt van de schakelaar drukken.
‫Wat dat zal doen, is dat het dit breekpunt voor mij zal creëren.
‫Je kunt natuurlijk ook op F negen drukken.
‫Dus de snelkoppeling is van negen en het is een stuk eenvoudiger om snelkoppelingen te gebruiken als je aan het debuggen bent in plaats van
‫de hele tijd te gaan debuggen en te klikken.
‫Oke.
‫Raak dus gewend aan het gebruik van de knoppen op je toetsenbord.
‫Oke.
‫Dus laten we beginnen met debuggen.
‫Oke.
‫Dus ik ga naar debuggen en dan begin ik met debuggen.
‫Of ik kan gewoon op vijf drukken om te beginnen met debuggen.
‫Nu we van deze kleine gele pijl zijn, die aangeeft dat dit is waar onze software momenteel vastzit en we
‫hebben het daar laten vastlopen omdat we dit breekpunt hier hebben gemaakt.
‫Dus de software is op dat moment kapot.
‫En nu kunnen we de software in ons eigen tempo vooruit helpen, zodat we regel voor regel kunnen gaan en zelfs dieper kunnen
‫graven.
‫Dus laten we dat doen.
‫Laten we over 10 stappen of op deze knop hier bovenaan drukken om over te stappen en naar de volgende stap te gaan.
‫Trouwens, al deze knoppen zijn alleen beschikbaar omdat ik in de foutopsporingsmodus zit.
‫Rechts?
‫Dus begon ik mijn software te draaien.
‫En je kunt ook zien dat stap-in-stap-over-en-stap-uit hier ook allemaal beschikbaar zijn.
‫Dus je hebt meerdere verschillende manieren om.
‫Ja.
‫Stap over, stap in en stap uit of druk op die knoppen.
‫Oke.
‫Dus wat ik nu doe, is dat ik naar de volgende regel ga.
‫Dus ging ik naar de volgende regel.
‫En je kunt nu zien dat het verschil een waarde is die zeven waarden heeft.
‫Het is dus een lijst met zeven snaren, Frank, Joe, Michelle enzovoort.
‫En nul, we hebben Frank op index één met Joe enzovoort.
‫Nu is feestvrienden zelf nog steeds een lege lijst, ook al kennen we er een waarde aan toe.
‫Maar dat komt omdat als je in lijn elf zit, lijn tien heeft uitgevoerd. Partyline 11 heeft nog niet uitgevoerd.
‫Dus dit betekent dat we opnieuw moeten overstappen zodat je opnieuw op F 10 kunt drukken om naar de volgende regel en onze regel
‫13 te gaan.
‫Dus regel 12 werd overgeslagen omdat er hier niets is.
‫Er is daar geen code.
‫En het ging gewoon naar dit voor elke lus.
‫Maar wat als je nu dieper wilt graven?
‫Dus wat als je wilt weten wat er gebeurde toen deze methode om vrienden te krijgen werd genoemd?
‫Wat je wel kunt doen, is teruggaan door deze pijl omhoog te slepen.
‫Dus ik sleep het weer omhoog en nu ben ik terug bij lijn elf.
‫En nu kan ik in plaats van over te stappen door op een knop te drukken waar ik in kan stappen
‫door op F elf te drukken, zodat ik op elk niveau kan drukken en ik stap in de 'get party Friend'-methode, wat betekent dat we nu in
‫lijn achttien staan, wat gewoon betekent dat nu zijn we binnen in de gate party vrienden methode oproep.
‫En ook hier kunnen we stap voor stap te werk gaan.
‫We kunnen kijken wat feestvrienden zijn.
‫We kunnen de waarde van feestvrienden bekijken.
‫Je kunt de telling zien, de nul.
‫Het is dus een lege lijst, wat gewoon betekent dat er geen vermeldingen in de lijst staan.
‫En dan hebben we deze while-lus waarin we dingen vergelijken, zodat we naar de volgende regel kunnen gaan en we
‫kunnen zien dat het aantal feestvrienden nul was en nul vier vergelijken en nul minder dan vier is.
‫Dus de while-lus is of de while is waar.
‫Dus we kunnen naar de volgende regel gaan.
‫En hier noemen we het feestvrienden, zodat we nog dieper kunnen gaan, zodat we kunnen ingrijpen om feestvrienden te krijgen.
‫En je kunt nu zien dat we hier in deze methode zitten.
‫Dus instappen betekent een methode ingaan, eruit stappen, wat de verschuiving is.
‫Elf springt uit een methode.
‫Maar laten we nu eens kijken naar deze methodeaanroep hier.
‫Ik kan de kortere naam zien, wat op dit moment Joe is.
‫Dan hebben we dit voor Loop en daar gaan we, stap voor stap in dit najaar.
‫Eerst stellen we de variabele in, dan vergelijken we.
‫Zodra een vergelijking waar is, gaan we naar de for-lus of de binnenkant van de for-lus.
‫Dan hebben we dit if-statement.
‫We vergelijken opnieuw en we kunnen zien, zoals het lijkt, de lengte drie niet groter is dan de
‫lengte of de kortste lengte van drie.
‫Dus drie is geen derde klas.
‫Nu was het if-statement niet waar, dus ging het naar de volgende iteratie van de Falu.
‫Dus nu gaat het de for-lus keer op keer uitvoeren.
‫Nu kun je uitstappen.
‫En wat dit zal doen, is dat het uit de uitvoering van deze methode stapt en dan kun je van daaruit verder gaan.
‫Maar wat u hiermee doet, is dat u de for-lus niet uitvoert zoals gewoonlijk.
‫OK, dus als ik weer uitstap, krijg ik een argument dat buiten bereik valt.
‫Je moet hier dus oppassen dat je niet de hele tijd in- en uitstapt, maar je moet deze tools
‫zorgelijk gebruiken, oké?
‫En je kunt natuurlijk gewoon vanaf daar rennen of je kunt stoppen met debuggen, je kunt het hele debugging-proces opnieuw starten omdat we nu deze kleine
‫fout hebben en misschien weet je niet hoe je het moet oplossen.
‫Dus we kunnen het hele ding gewoon herhalen en we kunnen nu natuurlijk weer stap voor stap gaan.
‫En we kunnen.
‫Stap over, stap over, stap over totdat we op het punt zijn waar het ons de namen geeft zodat je kunt zien dat we nu
‫zijn.
‫Michelle, nu gaat het naar de volgende naam in de lijst.
‫Nu gaat het woord Angelina naar de volgende naam in de lijst, en het is Carlos.
‫Je kunt dus zien dat je elke variabele en de status van elke variabele op elk moment kunt controleren, wat
‫super belangrijk is als je dingen wilt uitzoeken.
‫Oke.
‫Dus dat is het algemene idee van het gebruik van breekpunten en hoe te beginnen met het foutopsporingsproces.
‫In de volgende video gaan we kijken hoe we deze logische fout kunnen oplossen door de variabelen en hun toestanden op
‫een betere manier te zien, want nu kan ik natuurlijk over de variabelen zweven en zien welke waarde
‫ze hebben bij dit specifiek punt.
‫Maar ik wil meerdere variabelen tegelijkertijd vergelijken of de status van meerdere variabelen tegelijkertijd
‫zien.
‫En dat gaan we in de volgende video bekijken.
‫Dus ik zie je daar.