Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

19.04.2010, 15:23

1000 bis 2000 Ausgaben pro Sekunde dürften ohnehin nicht mehr übersichtlich sein. Ich kann mich Hafernuss nur anschliessen.

Ansonsten wäre std::stringstream eine Alternative. Wobei ich glaube, dass die Streams darauf ausgelegt sind, regelmässig geleert zu werden. Möglicherweise fährst du mit einem eigenen Riesen-Puffer besser.

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

12

19.04.2010, 16:00

Möglicherweise fährst du mit einem eigenen Riesen-Puffer besser.


Das hatte ich auch vor ... das Problem ist das ich wie gesagt nicht weis wie ich die Streams zwischenspeichern kann. Also wenn ich mir von ostream ein Object erstelle und dem etwas zuweisen will kommt immer das kein geeigneter constructor verfügbar ist. Mit streams kenn ich mich exakt garnicht aus ... also wenn ihr da n paar gute Tuts zu hättet wäre das klasse.

Gruß Zeus
Ich würde die Welt gerne verbessern, doch Gott gibt mir den Quellcode nicht!

Sprachen: C,C++/CLI,C#,ASM,PHP,Java(-script) ... fürn Anfang auch genug ...

Mein letztes Projekt:

http://www.youtube.com/watch?v=vU14ewcVaXU

13

19.04.2010, 17:55

Du kannst Streams nicht kopieren oder zuweisen.

Nimm doch für den Puffer std::string. Hol dir mit reserve() etwas Speicher und verwende append() oder operator+=, um Strings anzuhängen. Zur Umwandlung anderer Typen kannst du std::stringstream benutzen. Wenn du mit std::string Probleme wegen Reallokationen bekommst (was ich bezweifle), wäre auch std::deque<char> eine Möglichkeit.

Nach wie vor ist aber die Frage offen, wie sinnvoll unsere Ratschläge bei deiner Datenmenge sind. Warum genau musst du so viel loggen und wie willst du die Ausgabe nachher untersuchen?

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

14

19.04.2010, 18:34

das problem ist das sich irgentwo in mein programm ein kleiner fehler eingeschlichen hat der das programm ab und an zum absturtz bringt. ich vermute diesen fehler in der KI und deshalb soll jede KI aktuallisierung mit gelogged werden (also state übergänge etc). vermutlich wird der letzte eintrag in dem log der sein, welcher den absturtz verursacht hat. nur muss ich um das mit sicherheit sagen zu können die möglichkeit haben, fest zu stellen ob dieser zustand nicht schon einmal auftrat ohne probleme verursacht zu haben.
Ich würde die Welt gerne verbessern, doch Gott gibt mir den Quellcode nicht!

Sprachen: C,C++/CLI,C#,ASM,PHP,Java(-script) ... fürn Anfang auch genug ...

Mein letztes Projekt:

http://www.youtube.com/watch?v=vU14ewcVaXU

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

19.04.2010, 19:10

Hast du schonmal dran gedacht einen Debugger zu benutzen?^^

16

19.04.2010, 19:47

Debug-Ausgaben sind wahnsinnig praktisch. Manchmal sind sie viel besser als ein Debugger, vor allem wenn man nicht nur einen Zustand, sondern den zeitlichen Verlauf untersuchen möchte. Nichtsdestotrotz verstehe ich nach wie vor nicht, wie aus so vielen Ausgaben nützliche Informationen geholt werden können.

Abgesehen davon deuten nicht deterministische Abstürze sehr stark auf undefiniertes Verhalten hin, was wiederum ein guter Indikator dafür ist, dass zu wenig abstrahierende Sprachmittel eingesetzt worden sind. Also viele Operationen direkt mit Arrays, manueller Speicherverwaltung, etc. Sowas gilt es zu vermeiden. Seit ich das tue, habe ich fast nur noch Logikfehler in meinen Programmen.

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

17

19.04.2010, 19:47

ja habe ich :P ... das problem tritt mal nach 5 sekunden und mal erst nach 30 min auf ... das is das problem ... wenn ich n debugger rein häng kann es sein das es ewig dauert (ca. 25k zeilen quellcode) bis ich den qellcode so oft durch hab das der fehler auftritt ... deshalb will ich loggen ... hat den vorteil das es einfach leicht zu analysieren ist
Ich würde die Welt gerne verbessern, doch Gott gibt mir den Quellcode nicht!

Sprachen: C,C++/CLI,C#,ASM,PHP,Java(-script) ... fürn Anfang auch genug ...

Mein letztes Projekt:

http://www.youtube.com/watch?v=vU14ewcVaXU

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

19.04.2010, 19:52

Debug-Ausgaben sind wahnsinnig praktisch. Manchmal sind sie viel besser als ein Debugger, vor allem wenn man nicht nur einen Zustand, sondern den zeitlichen Verlauf untersuchen möchte.


Natürlich. Da sein Problem ja aber offenbar ein Absturz ist schien mir die Frage naheliegend da ein Debugger ja eben gerade in so einem Fall an Ort und Stelle den Fehler aufzeigt...

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

19

19.04.2010, 19:55

Abgesehen davon deuten nicht deterministische Abstürze sehr stark auf undefiniertes Verhalten hin, was wiederum ein guter Indikator dafür ist, dass zu wenig abstrahierende Sprachmittel eingesetzt worden sind. Also viele Operationen direkt mit Arrays, manueller Speicherverwaltung, etc. Sowas gilt es zu vermeiden. Seit ich das tue, habe ich fast nur noch Logikfehler in meinen Programmen.
also ich habe ja schon wie gesagt den verdacht das der fehler in der KI liegt denn die letzte ausgabe auf der console ist, das die ameise in den carry state geht und dann stürzt das programm ab wegen eines nicht vorhanden vectors (ich nehme an die colony fehlt) ... das problem ist, das ich den quellcode schon mehrfach durch bin und kein fehler gefunden habe, deshalb war die vermutung das der fehler nur gelegentlich auftritt und das wollt ich halt mit dem log weiter analysieren ... da darin dann alle infos stehen (state übergänge, ids der entitys) ... halt alles was von interesse ist ... hab auch schon ein kleines tool geschrieben das den log dann analysieren kann (c# ftw) ... :P
Ich würde die Welt gerne verbessern, doch Gott gibt mir den Quellcode nicht!

Sprachen: C,C++/CLI,C#,ASM,PHP,Java(-script) ... fürn Anfang auch genug ...

Mein letztes Projekt:

http://www.youtube.com/watch?v=vU14ewcVaXU

20

20.04.2010, 18:09

Mit " try{}catch(exception){"Fehlermeldung"} " findet man den fehler sehr schnell mit dem debugger. Vielleicht solltest du dir das mal näher anschauen.

Werbeanzeige