Ik ben op dit moment bezig met het uitbreiden van een applicatie in c++ (met mfc). Bij het debuggen komen er vreemde situaties voor. Variabelen worden in de watchwindow als "out of scope" aangeduid. Variabelen die niet als "out of scope" worden aangeduid zijn weer onjuist. Bijvoorbeeld bij een for lus blijft de waarde steeds op 1 staan (hij zou bij 0 moeten beginnen)
Ook bij het steppen komt er vreemd gedrag voor.
Voorbeeldje:
code doet mooi de eerste 3 loops, gaat allemaal goed (hoewel sommige variabelen 'out of scope' zijn volgens de watch)
als we bij 4 aankomen gaat het mis.
Bij 4 is i altijd 1. De j is ook altijd 1. Dan word de ifstatement(7) uitgevoerd. Als er geen naam is voorgekomen dan zou 8 worden uitgevoerd moeten worden.
Ookal moet dat 1x voorkomen door de gegevens die ik ingegeven heb, door middel van steppen kom ik daar nooit. Maar het uiteindelijke resultaat klopt. Dwz error no name found wordt geprint in dit voorbeeld.
Nog iets leukers, als ik een breakpoint wil zetten bij 6 komt hij bij 8 te staan...
Wordt er een beetje gek van, het uiteindelijke resultaat klopt maar ik weet dus niet of de tussenliggende resultaten ook kloppen.
Dit gedrag komt voor bij debug, release en static/dynamic link naar mfc. (alle combinaties)
Geprobeerd te googlen maar kom uit op sites waar f5 vreemd gedrag had (vs2003) en een reinstall van vs2005 + sp1.
Heeft iemand een idee wat het kan zijn?
Ook bij het steppen komt er vreemd gedrag voor.
Voorbeeldje:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| for(int i = 0; i < lengte; i++) //1 { for(int j = 0; j < lengte2; j++) //2 { for(int k = 0; k < lengte3; k++) //3 { switch(naam) { case kees: dieiets(); break; case jaap: dieiets(); break; default: //wrong name break; } } } } bool foundname = false; for (int i = 0; i < lengte4; i++) //4 { foundname = false; for (int j = 0; j < lengte4; j++) //5 { if (namen1[i] == namen2[j]) { foundname = true; //6 break; } } if (!foundname) //7 { result = "error no name found" //8 } } return result.length() |
code doet mooi de eerste 3 loops, gaat allemaal goed (hoewel sommige variabelen 'out of scope' zijn volgens de watch)
als we bij 4 aankomen gaat het mis.
Bij 4 is i altijd 1. De j is ook altijd 1. Dan word de ifstatement(7) uitgevoerd. Als er geen naam is voorgekomen dan zou 8 worden uitgevoerd moeten worden.
Ookal moet dat 1x voorkomen door de gegevens die ik ingegeven heb, door middel van steppen kom ik daar nooit. Maar het uiteindelijke resultaat klopt. Dwz error no name found wordt geprint in dit voorbeeld.
Nog iets leukers, als ik een breakpoint wil zetten bij 6 komt hij bij 8 te staan...
Wordt er een beetje gek van, het uiteindelijke resultaat klopt maar ik weet dus niet of de tussenliggende resultaten ook kloppen.
Dit gedrag komt voor bij debug, release en static/dynamic link naar mfc. (alle combinaties)
Geprobeerd te googlen maar kom uit op sites waar f5 vreemd gedrag had (vs2003) en een reinstall van vs2005 + sp1.
Heeft iemand een idee wat het kan zijn?
[This space is for rent]