Seite 1 von 2
Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Di Aug 30, 2011 4:41 pm
von Xin
In Visual Studio habe ich folgendes Programm erstellt. Ich füge an der For-Schleife einen Breakpoint ein und starte den Debugger.
Was steht auf dem Bildschirm, wenn der Debugger auf den Breakpoint trifft?
fortest.jpg
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Di Aug 30, 2011 6:16 pm
von cloidnerux
Hello Proggen.org:
1
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Di Aug 30, 2011 6:36 pm
von fat-lobyte
Gesunder Menschenverstand würde sagen entweder:
Nichts, da die Ausgabe gepuffert ist und vielleicht nicht ge"flush"t wird,
oder
eben "Hallo proggen.org: "
Aber wenn das die Antwort ist, dann ist das ein Langweiliges Rätsel. Was steht denn tatsächlich da?
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Di Aug 30, 2011 6:51 pm
von Xin
Das mit dem flush ist nicht ganz verkehrt. ^^
Hello proggen.org : 0
cloidnerux, wie kommst Du auf 1?
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Mi Aug 31, 2011 6:51 pm
von cloidnerux
cloidnerux, wie kommst Du auf 1?
Ich dachte mir: Es ist VS, es muss und kann nicht Logisch sein^^
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Mi Aug 31, 2011 8:38 pm
von Xin
Findest Du es logisch, dass er die "0" schon schreibt? ^^
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Mi Aug 31, 2011 8:47 pm
von cloidnerux
Findest Du es logisch, dass er die "0" schon schreibt? ^^
Aus irgendeinem Grund schon, weiß nicht, kann Erfahrung sein^^
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Mi Aug 31, 2011 8:51 pm
von fat-lobyte
Ich könnts mir in assembler vorstellen:
Die Anweisung wird zuerst ausgeführt, und dann erst Überprüft ob die Schleifenbedingung erfüllt ist oder nicht. Wenn du den Breakpoint am Schleifenkopf setzt, bleibt er erst bei dem branch stehen, die erste Anweisung wird aber ausgeführt.
So meine Theorie...
Compilermäßig alles Fair, aber die Zuordnung des Debuggers zwischen Quellcode und Maschinencode wäre dann suboptimal.
Wie siehts in Assembler aus? Was ist jetzt die Antwort des Rätsels? Wie bist du da überhaupt draufgekommen?
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Mi Aug 31, 2011 10:32 pm
von Xin
fat-lobyte hat geschrieben:Ich könnts mir in assembler vorstellen:
Die Anweisung wird zuerst ausgeführt, und dann erst Überprüft ob die Schleifenbedingung erfüllt ist oder nicht. Wenn du den Breakpoint am Schleifenkopf setzt, bleibt er erst bei dem branch stehen, die erste Anweisung wird aber ausgeführt.
So meine Theorie...
Compilermäßig alles Fair, aber die Zuordnung des Debuggers zwischen Quellcode und Maschinencode wäre dann suboptimal.
Wie siehts in Assembler aus? Was ist jetzt die Antwort des Rätsels? Wie bist du da überhaupt draufgekommen?
Ich habe einen Tag lang versucht das erste Element (i==0) in einem Array zu debuggen. Dafür habe ich den Breakpoint an die For-Schleife gesetzt.
Der Body der Schleife wird komplett durchlaufen, nicht nur eine Anweisung. Erst dann greift der Breakpoint vor "++i". Steppt man dann über eine Anweisung, wird ++i ausgeführt, i ist also 1, wenn ich in den Schleifenkörper eintrete.
Ich habe den Fehler also nicht gefunden, weil ich die ganze zweite Element untersucht habe.
Schreibt man stattdessen
Code: Alles auswählen
unsigned int i;
printf( "Hallo proggen.org : " );
for( i = 0; i < 8; ++i )
printf( "%d", i );
stoppt der Breakpoint bei i=0 und ich kann das erste Element (i==0) debuggen.
Re: Kleines Visual Studio 2010 - Quiz :-)
Verfasst: Do Sep 01, 2011 8:40 am
von fat-lobyte
Aha. Macht "Sinn". Breakpoints stehen vor Anweisungen, und die einzige echte Anweisung in dieser Zeile ist ++i.