Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.

Slides:



Advertisements
Verwante presentaties

Advertisements

Aflezen van analoge en digitale meetinstrumenten
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World •Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Uitleg toets [Info]  In deze presentatie wordt kort uitgelegd wat je met de toets [Info] in WinPOS kunt doen.  Door op de linker muisknop te klikken,
Alleen voor de flinke nadenkers onder ons
OGO Markten en sociale organisatievormen voor technologie en innovatie 0A412 1 Markten en sociale organisatievormen voor technologie en innovatie feedback.
Arduino project.
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Maak zonder weerstand je proefwerk natuurkunde!
PROS2 Les 11 Programmeren en Software Engineering 2.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
TIBETAANSE PERSOONLIJKHEIDSTEST
om deze presentatie uit te voeren
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Instructie Programmeren Task 5
Inleiding Komende periode gaan we het hebben over kinderen die ziek-zijn: Verzorging, Het herkennen van de symptomen/de klachten Wat kun/moet je doen.
Numerieke Natuurkunde
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.
Klik ergens op het witte deel van deze pagina om verder te gaan
Hoofdstuk 4 – Gegevens analyseren
MET DANK AAN COLLEGA’S IN DEN LANDE ! vee 2012
TIBETAANSE PERSOONLIJKHEIDSTEST
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Les 2: Interactie in je space door middel van klikbare objecten en actionscript. Wat is actionscript en programmeren?
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Instructie Programmeren Task 3 5JJ70. Task 3.1: MIPS Rating Volg de beschrijving in de opdracht om het aantal assembly instructies in de loop uit te vinden.
Instructie Programmeren Task 7
Instructie Programmeren Task 2 5JJ70. Task 2.1: Voltage divider Welk type variabele heb je nodig? Negative weerstanden bestaan niet! (print een error.
Techniekanalyse Wat kun je verwachten na 4 keer op het ijs te hebben gestaan. Persoonlijk had ik al 7 jaar niet meer op de schaats gestaan. Maar na een.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Hoe maak ik een PowerPoint presentatie?
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Inloggen >> Gegevensaanlevering en controle in Peridos In Release 3.3 van Peridos is er een nieuwe module gebouwd voor het aanleveren en bekijken van gegevens.
Waarde van de auto: bepaal het gratis via auto verkoop site ikwilvanmijnautoaf.nl Waarde autoWaarde auto bepalen ikwilvanmijnautoaf.nl.
Loops en errors Array's Random try catch for loop while loop do while loop.
Grafieken in de natuurkunde Ga verder Dia’s worden stap voor stap automatisch ingevuld Ga verder Pas als rechtsonder verschijnt, klik dan voor de volgende.
Gebruiksaanwijzing Hoi stelletje gozerts, dit is allemaal onzin over een computer. Veel plezier ermee.
Waar moet je op letten? Om een goede stageplaats te hebben moet je er zeker van zijn dat het bedrijf waar je naar toe wil ook onze school een beetje kent.
Meest voorkomende vragen bij examenteksten.
Stage zoeken bij Entree-opleiding
Alleen toevallige variaties
Meest voorkomende vragen bij examenteksten.
Gevorderde EV3 PROGRAMMEER LES
Gevorderde programmeer Les
De programmeertaal C++
Parallelle Balken Synchronisatie
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les5 Invoer en Uitvoer.
Controlekaarten Industrie
Alleen toevallige variaties
JULLIE WETEN DAT IK HET HEB, MAAR WAT IS HET?
Oorcheck op het mbo 5 Over Gehoor & gehoorschade
Stage zoeken bij Entree-opleiding
Waar moet je op letten? Om een goede stageplaats te hebben moet je er zeker van zijn dat het bedrijf waar je naar toe wil ook onze school een beetje kent.
Loopbaan en burgerschap les 3
Pak je boeken! Paragraaf 3.4!
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Instructie Programmeren Debuggen 5JJ70

Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat gaat er precies mis? Wordt de output goed weergegeven? Is de berekening wel correct? Is de input van de berekening wel ok? Is je variabele type goed gekozen? Hebben al je variabelen een waarde voordat je ermee gaat rekenen? Maar ook: Is je programma ook werkelijk gecompileerd? (Gebruik de optie Build  Rebuild Solution als je het zeker wilt weten) Meestal is het niet meteen duidelijk en zul je moeten zoeken PAGE 2

Debuggen: Compiler warnings PAGE 3 Zijn er warnings tijdens het compileren? Kan je elk van de warnings verklaren? Probeer ze allemaal te verhelpen Let goed op dat je de build output bekijkt:

Debuggen: Het probleem zoeken Plaats een breakpoint bovenaan je programma Bekijk de inhoud van je variabelen, controleer ze op juistheid door met de muis erop te gaan staan, of gebruik het Autos of Locals venster Gebruik “Step Over” (F10) om steeds een stapje verder te gaan PAGE 4 MouseOver hints Autos

Debuggen: Het probleem zoeken Bekijk vanaf welke regel je variabelen niet meer de waarde hebben die je verwacht: de fout zit dan in de regel daarboven! Gebruikmaken van wat extra printf statements kan ook helpen: Kun je de fout niet vinden op deze manier dan kun je stapsgewijs steeds meer van je programma uit-commenten tot het weer juiste (tussen) antwoorden produceert De fout zit in het laatst uit-gecommente deel, of in de interactie van dat deel met de rest van de code PAGE 5

Debuggen: Code snel uit-commenten Heb je al gebruik gemaakt van /* en */, dan kan het lastig zijn hele stukken code snel uit te schakelen −Onderstaand gedrag is waarschijnlijk niet de bedoeling wanneer je de 2 declaraties uit wilt schakelen: −Als alternatief kun je de preprocessor gebruiken: PAGE 6

Debuggen: Run Time errors Je moet eerst waarde toewijzen aan een variabele voordat je deze kunt gebruiken Doe je dit niet, dan staat er een random waarde in de variabele en krijg je een waarschuwing: On-geinitialiseerde bytes in Visual C++ bevatten: 0xCC in het stack geheugen 0xCD in het heap geheugen PAGE 7 (Hexadecimale weergave aan en uitzetten gaat met de “Hex” knop)

Debuggen: Access violations/Unhandled Exceptions Je leest of schrijft naar een geheugenlocatie die niet van jouw is Dit is alleen mogelijk als je variabelen via het adres aanspreekt: Via de “address of” operator (&) of het vergeten ervan Via pointers Via array indexeringen De foutmelding geeft aan of het een lees of een schrijffout betreft, dit helpt bij het zoeken naar de oorzaak PAGE 8

Debuggen: Access violations/Unhandled Exceptions Veel voorkomende fouten: Gebruik van de waarde van de variabele waar een adres gewenst is: int x; scanf(“ %d”, x);// oops, no & Vergeten ruimte te reserveren voor het ‘\0’ karakter: char* str = (char*) malloc(sizeof(char)*11); strcpy(str, “Net te lang”); // oops, 12 chars nodig! Indexering van een array buiten de grenzen ervan: int x[10], i; for(i=0; i<=10;i++) // oops, de loop gaat door tot x[i] = 0;// en met i=10, terwijl x[9] het // laatste item is! Een pointer niet initialiseren: float *temp;// temp wijst naar een random adres printf(“ %f”, *temp); PAGE 9

Debuggen Zet commentaar bij je code! Geef aan wat een bepaalde functie of blok code doet, en wat het doel erachter is. Dit vereenvoudigt het debuggen! Gebruik variabelen met een beschrijvende naam: Vergelijk: Met: PAGE 10