Kleines Visual Studio 2010 - Quiz :-)

Developer-Tools, Entwicklungsumgebungen und alles andere, was sich installieren lässt
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Kleines Visual Studio 2010 - Quiz :-)

Beitrag von Xin » Di Aug 30, 2011 4:41 pm

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von cloidnerux » Di Aug 30, 2011 6:16 pm

Hello Proggen.org:
1
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von fat-lobyte » Di Aug 30, 2011 6:36 pm

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?
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von Xin » Di Aug 30, 2011 6:51 pm

Das mit dem flush ist nicht ganz verkehrt. ^^

Hello proggen.org : 0

cloidnerux, wie kommst Du auf 1?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von cloidnerux » Mi Aug 31, 2011 6:51 pm

cloidnerux, wie kommst Du auf 1?
Ich dachte mir: Es ist VS, es muss und kann nicht Logisch sein^^
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von Xin » Mi Aug 31, 2011 8:38 pm

Findest Du es logisch, dass er die "0" schon schreibt? ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von cloidnerux » Mi Aug 31, 2011 8:47 pm

Findest Du es logisch, dass er die "0" schon schreibt? ^^
Aus irgendeinem Grund schon, weiß nicht, kann Erfahrung sein^^
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von fat-lobyte » Mi Aug 31, 2011 8:51 pm

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?
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von Xin » Mi Aug 31, 2011 10:32 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Kleines Visual Studio 2010 - Quiz :-)

Beitrag von fat-lobyte » Do Sep 01, 2011 8:40 am

Aha. Macht "Sinn". Breakpoints stehen vor Anweisungen, und die einzige echte Anweisung in dieser Zeile ist ++i.
Haters gonna hate, potatoes gonna potate.

Antworten