Nach dem Upgrade auf Xcode 3.2 und Snow Leopard sind meine Debug-Builds defekt und schlagen zur Laufzeit fehl. Stringstreams scheinen nicht zu funktionieren. Sie arbeiten im Freigabemodus.
Ich habe es auf eine Kombination von GCC 4.2, OSX SDK 10.6 und dem _GLIBCXX_DEBUG Pre-Prozessor-Symbol beschränkt. Dies sind die Standardwerte für die Debug-Konfigurationen neuer Xcode-Projekte.
Dieser Code zeigt das Problem:
%Vor%Die Stringstream-Einfügung sollte funktionieren, aber wenn Sie GCC 4.2 und _GLIBCXX_DEBUG verwenden, wird die '& lt; & lt;' Der Operator gibt eine Ausnahme aus, und die Fehler- und Fehlerbits werden gesetzt.
Ich habe verschiedene Kombinationen von Compiler und SDK mit diesen Ergebnissen ausprobiert: - Die Verwendung von GCC 4.2, LLVM-GCC oder CLANG mit SDK 10.6 funktioniert NICHT. - Die Verwendung von GCC 4.2, LLVM-GCC oder CLANG mit SDK 10.5 funktioniert. - Die Verwendung von GCC 4.0 mit SDK 10.5 oder 10.6 funktioniert.
Wenn _GLIBCXX_DEBUG beschädigt ist oder nicht unterstützt wird (mit SDK 10.6 und GCC 4.2), warum ist dies der Standard für Debug-Konfigurationen in neuen Projekten (C ++ - Befehlszeile)?
Der STL-Debug-Modus wird derzeit in gcc 4.2 nicht unterstützt. Sie können gcc 4.0 mit dem STL-Debug-Modus verwenden oder die Präprozessor-Makros im Debug-Modus aus Ihrer Debug-Konfiguration entfernen und weiterhin gcc 4.2 verwenden.
Dies ist jetzt ein bekannter und gemeldeter Fehler im Compiler. Die einzigen Problemumgehungen sind:
Entfernen Sie die Markierungen wie vorgeschlagen. Das ist in Ordnung, aber diese Flags sind manchmal sehr nützlich, und Sie möchten sie nicht aus Projekten entfernen. Nachdem der Fehler behoben wurde, gehen Sie zurück und aktualisieren Sie sie erneut!
Führen Sie den Test im Freigabemodus aus, bis Sie die Debuggersymbole wirklich benötigen, und entfernen Sie dann die Flags vorübergehend.
Ich habe mich für # 2 entschieden, damit bei der Fehlerbehebung zwar die Flags fehlen, aber Projekten nicht fehlen. Für weitere Informationen siehe:
Übrigens, der Code, den ich hatte, der dieses Problem hatte, war einfach so einfach:
%Vor%Vergessen Sie nicht, jedes Ziel zu konfigurieren, wenn Sie viele haben (ich hatte dieses Problem), da die Projekterstellungskonfiguration die Zielerstellungskonfiguration nicht überschreibt.
Ich habe wirklich Gesandte endlich herausgefunden, um das zu beheben, ich habe eine XP VirtualMachine und Studio 2005 verwendet, um dieses Problem zu vermeiden!