Consolenausgabe - Codeblocks - nach std::endl erfolgt keine weitere Textausgabe



  • Hallo verehrte Leute,

    ich habe codeblocks installiert, aber die Konsolenausgabe verstehe ich nicht.
    Das ist meine main.cpp, nichts aufregendes:
    #include <iostream>

    int main ()
    {
    std::cout << "Willkommen zum C++-Kurs!" << std::endl;
    std::cout << "Hier erlernen Sie die Grundlagen der Programmiersprache C++.";
    }
    Ausgegeben wird aber nur die erste Zeile. Fehlermeldungen bekomme ich nicht.
    Allerdings habe ich seit einem Windows-Update Probleme mit Codeblocks-Abstürzen gehabt, genauer die .exe des erstellten Programms. Ich habe CB daraufhin neu installiert aber das obige seltsame Verhalten ist nun da.
    Kann mir da jemand einen Tipp geben?

    Jörg

    hier nochmal die CB-Meldungen:
    rocess terminated with status 0 (0 minute(s), 0 second(s))
    0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

    -------------- Run: Debug in HalloWelt (compiler: GNU GCC Compiler)---------------

    Checking for existence: C:\Arduino\HalloWelt\bin\Debug\HalloWelt.exe
    Executing: "C:\Arduino old\Codeblocks/cb_console_runner.exe" "C:\Arduino\HalloWelt\bin\Debug\HalloWelt.exe" (in C:\Arduino\HalloWelt.)
    Process terminated with status -1073741819 (0 minute(s), 2 second(s))


  • Mod

    Ich habe im Hinterkopf, dass das Texterminal bei CodeBlocks recht hart puffert. Mach nach der zweiten Zeile auch noch mal ein endl und berichte!



  • Wenn Du wissen willst, wie sich ein Konsolenprogramm wirklich verhält, führ es in einer Konsole aus 😉



  • @SeppJ
    Das hat leider nichts geändert.



  • @Belli
    Ich habe das jetzt in der Konsole ausgeführt. Ich bin nch der Beschreibung vorgegangen:
    https://krother.gitbooks.io/objektorientierte-programmierung-mit-c/content/gitbook/compilieren_kommandozeile.html

    Wieder sieht es so aus als ob alles normal funktioniert aber es wird nur die erste Zeile ausgegeben.
    Ich habe nach der 2. Zeile hilfsweise nochmal eine Endlosschleife zugefügt, aber die scheint gar nicht mehr angesprochen zu werden, denn nach der Ausgabe der ersten Zeile war die cmd wieder bereit für die Eingabe per Tastatur.


  • Mod

    Gib mal einen anderen Text in der ersten Zeile an. Ich habe den Verdacht, du führst gar nicht das aktuelle Programm aus, sondern eine alte Version.



  • @SeppJ
    jetzt glaube ich mir selbst nicht mehr:
    In codeblocks funktioniert jetzt die Ausgabe richtig (also in der CB-Console) Obwohl ich da m. W. nichts geändert habe. In der 2. Variante über die cmd.exe immer noch das gleiche (die erstellten .exe habe ich immer mit anderen Versionsnummer benannt um alte Versionen auszuschließen)
    Nun gut, zur Hauptsache beschäftige ich mich mit Arduino-Programmierung,. Ich wollte mich mit der Konsolenausgabe etwas unabhängiger machen und Code-Teile schneller testen ohne immer alles auf den Arduino zu laden.

    Vielen Dank für deine Mühe, SeppJ und natürlich auch dir, Belli



  • okay, das Thema ist nicht durch. Anscheinend wird sehr unzuverlässig compiliert weil das Phänomen jetzt auch wieder in CB auftritt. Manchmal wird wohl richtig compiliert, dann kommt die erwartete Ausgabe. Häufig kommt eine leere Konsolenausgabe bzw. eine unvollständige.
    Fehlermeldungen werden in CB nicht angezeigt.
    Hat jemand noch eine Idee? Ich nutze die mingw32-g++.exe.


  • Mod

    Zur Sicherheit das Offensichtliche, falls dir das klar nicht bewusst sein sollte: Dein Compiler arbeitet garantiert richtig. Das Problem liegt bei deiner Benutzung deiner Entwicklungsumgebung.

    Welchen Quelltext genau benutzt du derzeit? Machst du zwischendurch Änderungen?

    Beobachtest du unterschiedliches Verhalten, selbst wenn du die gleichen Schritte exakt wiederholst? Was sind diese Schritte?

    Bist du sicher, dass du nicht vielleicht versehentlich das Programm im Debugger ausführst, der Zeile für Zeile durchgeht? Wusstest du überhaupt, dass man mit Code::Blocks Zeile für Zeile durch ein Programm gehen kann?



  • also das ist der Quellcode:

    #include <iostream>
    #include <string>
    using namespace std;
    int main ()
    {
    string Produkte[3];

    Produkte[0] = "Text A";
    Produkte[1] = "Text B";
    Produkte[2] = "Text C";
    
    cout << "xy" << endl;
    cout << Produkte[1] << endl;
    cout << Produkte[2] << endl;
    

    }

    Beim Testen habe ich nur die cout-Teile abwechselnd auskommentiert bzw. die Texte geändert.. Das Debuggen hat mich insoweit weitergebracht als dass ich jetzt eine Meldung angezeigt bekomme:
    Building to ensure sources are up-to-date
    Selecting target:
    Release
    Adding source dir: C:\Arduino\HalloWelt
    Adding source dir: C:\Arduino\HalloWelt
    Adding file: C:\Arduino\HalloWelt\bin\Release\HalloWelt.exe
    Changing directory to: C:/Arduino/HalloWelt/.
    Set variable: PATH=.;C:\CodeBlocks\bin;C:\CodeBlocks;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\joerg\AppData\Local\Microsoft\WindowsApps
    Starting debugger: gdb.exe -nx -fullname -quiet -args C:/Arduino/HalloWelt/bin/Release/HalloWelt.exe
    done
    Registered new type: wxString
    Registered new type: STL String
    Registered new type: STL Vector
    Setting breakpoints
    (no debugging symbols found)
    Debugger name and version: GNU gdb 6.8
    Child process PID: 13920
    (no debugging symbols found)
    (no debugging symbols found)
    (no debugging symbols found)
    (no debugging symbols found)
    (no debugging symbols found)
    Program received signal SIGSEGV, Segmentation fault.
    In libstdc++-6!_ZNSs6assignEPKcj () (C:\CodeBlocks\bin\libstdc++-6.dll)

    Die vorletzte Zeile macht mich jetzt stutzig. Aber da hören meine Kenntnisse definitiv auf das annähernd zu deuten, da ich keine Pointer im Code nutze.


  • Mod

    Uff! Da ist irgendwas übel kaputt. Das hilft dir natürlich nicht direkt, aber es ist der Grund warum ich dir an dieser Stelle nun nicht mehr konkret weiter helfen kann.Die Fehlermeldung deutet darauf hin, dass der Fehler innerhalb der Standardbibliothek in den Zeilen passiert, wo du die Zuweisungen machst. So als ob die Stringobjekte intern beschädigt wären. Was an sich vom Programmcode her nicht sein kann, da ist alles wohldefiniert und kann eigentlich nichts fehlschlagen. Was wiederum bedeutet, dass in deiner Laufzeitumgebung irgendwas kaputt ist. Du schreibst ja schon, dass der Fehler auftritt, nachdem du CB neu installiert hast. Vielleicht ist dabei irgendwas durcheinander gekommen.

    Ich kann dir daher nur den Rat geben, alles (IDE, Compiler, Runtime, alles was irgendwie mit der Entwicklung zusammen hängt) möglichst komplett zu deinstallieren und sauber neu zu installieren. Ich weiß aber nicht konkret, wie man sicher gehen kann, dass bei einer anscheinend schon kaputten Installation von C::B & Co. sicher gestellt werden kann, dass beim Deinstallieren auch wirklich alles weg ist. Da musst du deine eigenen Computerkenntnisse und/oder Google bemühen, bis du alles so gut du kannst entfernt hast.

    Mir ist bewusst, dass Neuinstallation stets der (schlechte) erste Ratschlag in schwachen Softwareforen ist, aber hier sieht's wirklich so aus, als wäre es die Lösung.



  • Okay, aber du hast mir trotzdem sehr weitergeholfen, ohne deine Hilfe hätte ich den Fehler weder einkreisen bzw. deuten können zumal der ja oft aber nicht immer / immer gleich aufgetreten ist. Also werde ich mich an die Neuinstallation machen, das wird dann etwas dauern weil ich das in Ruhe an einem Wochenende mache werde. Also vielen Dank nochmal!


Anmelden zum Antworten