VS 2010 else zweig debuggen
-
Hey, ich hatte es mittlerweile schon öfter, das ich beim debuggen keine variablen aus dem else zweig einer bedingung angucken kann. Pack ich den code aus dem else in den if zweig kann ich den gleichen code debuggen. Was noch auffällt ist, dass einige variablen zwar angezeigt werden, aber nicht der variable entsprechen die man sich gerade anguckt. Als beispiel mal ein (zwei^^) screenshot.
http://www.abload.de/image.php?img=else1iyc.png http://www.abload.de/image.php?img=ifzd8v.png
Wie man unten im watch fenster sehen kann ist sogar der typ vom "offset" anders, der muss also von sonstwo kommen.
Hatte sonst schon jemand das Problem oder kennt einen fix? Oder bin ich einfach gerade zu doof
-
Was programmierst du denn da schönes?
-
Wenn die Variablen nicht in dem aktuellen Context drin sind, kannst Du sie logischerweise auch nicht anschauen...
-
Aber wie man schön am gelben pfeil sieht bin ich da drin...
-
Jetyt seh ich es... hmm...
Ich kann mir nur vorstellen, dass Du in Deinen Debug-Projekct0Einstellungen trotzdem Optimierungen aktiviert hast und somit die Variablen wegoptimiert wurden!
-
Und es kann auch nicht sein, dass bei deiner "else-Variante" die Variable level == 0 ist?
Dann würde ja bei offset wirklich 0 raus kommen.
-
Hey, danke für die antworten
Jochen Kalmbach schrieb:
Jetyt seh ich es... hmm...
Ich kann mir nur vorstellen, dass Du in Deinen Debug-Projekct0Einstellungen trotzdem Optimierungen aktiviert hast und somit die Variablen wegoptimiert wurden!Optimierung sind im Debug modus komplett aus. (/Od)
oneill5000 schrieb:
Und es kann auch nicht sein, dass bei deiner "else-Variante" die Variable level == 0 ist?
Dann würde ja bei offset wirklich 0 raus kommen.Selbst wenn das so wäre: Unten im watch fenster sieht man, dass er die anderen variablen im aktuellen kontext nicht kennt. Und die variable offset die er findet hat den typ int (auch inten im fenster ersichtlich). Mein offset aber float (wie man in der code zeile darüber sieht).
Ich kanns mir halt einfach nicht erklären, vorallem da einfaches umkopieren funktioniert.Oh gerade mal was ausprobiert und ich kanns sogar in einem ganz simplen test reproduzieren, vielleicht kann das jemand mit vs2010 bei sich mal testen:
int main(int argv, char *argc[]) { int a = 5; if(true) { float a = 3; a += 3; } else { float a = 4; a += 3; } return 0; }
Wenn ich durch den if block steppe wird mir a als richtiger wert angezeigt. Änder ich die bedingung in if(false) und gucke mir den else block an, zeigt er mit die äußere
int a = 5;
variable an, nicht die innere float.
-
Das sieht wirklich nach einen Bug aus...
Kannst Du das mal auf Connect melden und mit dann den Link dazu hier posten?Hier mal mein Code:
#include <stdio.h> #include <tchar.h> int _tmain(int argv, char *argc[]) { int a = 5; if(false) { float a = 3; a += 3; printf("%f\n", a); } else { float a = 4; a += 3; printf("%f\n", a); } return 0; }
ADD: Hab es mal intern an die VC++ Produkt-Gruppe weitergeleitet... Du solltest es aber mal auf Connect eintragen!
-
Hey,
sorry ich steh nicht so auf Anmeldungen. Wenn du lust hast kannst du das aber gerne da eintragen.
Gruß
-
Hier der Eintrag auf Connect:
https://connect.microsoft.com/VisualStudio/feedback/details/612911/Jemend von der Produkt-Gruppe konnte den Fehler nachvollziehen und hat ihn in das interne Bug-Log System eingetragen...
Wann der Fehler behoben wird, kann ich Dir aber nicht sagen... ich habe zweifel, dass er es in den SP1 schafft...Danke für Deine Meldung des Fehlers!
-
Super, danke
Auch kein hotfix oder so? Weil das ist ja schon ziemlich... doof
Gruß
-
oneill5000 schrieb:
Was programmierst du denn da schönes?
Oh, sorry fast vergessen zu antworten. Einen Volumenrenderer in OpenCL
-
solala schrieb:
Auch kein hotfix oder so? Weil das ist ja schon ziemlich... doof
Wenn es dich arg stört, dann musst Du Dich direkt an den MS Produkt Support wenden. Die können dann mit dem Pruduktteam (und diversen anderen) entscheiden ob es einen Hotfix gibt...