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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

31

19.02.2009, 21:57

also bei mir bricht der debugger wieder ab, und zwar in zeile 62 in save.cpp:

C-/C++-Quelltext

1
    if(this->m_things[ort][ding-1]+anzahl>=0)


wieder das gleiche. ort ist 0, ding ist 1, m_things[0] ist leer, darauf kannst du also nicht zugreifen -> bumm

ich weis ja nicht was für einen debugger du verwendest, aber dass der bei sowas icht abbricht kann ich mir irgendwie nicht vorstellen...

und fixe doch bitte mal alle funktionen bei denen das return fehlt. sowas ist einfach nur falsch. von kleinigkeiten kann da absolut nicht die rede sein, womöglich ist es sogar der auslöser für deinen bug. sowas kann zu den abenteuerlichsten bugs führen, ich hab selber schon stundenlang nach bugs gesucht die genau durch sowas ausgelöst wurden...

als kleine anmerkung vielleicht auch noch: in timer.h solltest du time.h inkludieren (oder <ctime> für die C++ version, dann liegen alle time funktionen halt in std:: ), da die funktionen wie localtime() dort sonst nicht bekannt sind und in ausgabe.cpp solltest du <string> inkludieren da die << operatoren für strings dort sonst nicht definiert sind.

Beliah

Treue Seele

Beiträge: 115

Wohnort: Söhlde - LK Hildesheim

Beruf: FI-Anwendungsentwicklung

  • Private Nachricht senden

32

19.02.2009, 22:12

Mich wundert das der GCC dies standardmäßig nicht als Fehler anzeigt, aber Warnungen, und als das zeigt er das sicher auf jedenfall an, sollte man auch immer versuchen zu beheben, egal wie unkritisch. Ansonsten ist das Buildlog voll von Warnungen und man übersieht die, die zu Fehlern führen können.
Debuggers don't remove bugs, they only show them in slow motion.

Google Suche ohne Werbung und Cookies: Scroogle

Derzeitige(s) Freizeitprojekt(e)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

33

19.02.2009, 22:14

Zitat von »"Beliah"«

Mich wundert das der GCC dies standardmäßig nicht als Fehler anzeigt


ja das is ein ziemlich blödes "feature" von GCC das mich auch schon viel nerven gekostet hat. mit entsprechenden flags kann man ihm das aber natürlich austreiben...


anyway warnings sind wie du schon sagtest natürlich ernst zu nehmen...

nur mal als beispiel:

Zitat von »"MSVC"«

hafling.cpp(565) : warning C4700: uninitialized local variable 'i' used


nur eine warning mag man denken, aber schauen wir uns die zeile mal an:

C-/C++-Quelltext

1
2
3
4
        for(int i; i <= 10; i++)
        {
            m_skill[3][i] = 0;
        }


bumm. das kompilliert zwar, ist aber undefiniert und wird ganz sicher abstürzen (sagen wir mal: die wahrscheinlichkeit dass es nicht abstürzt ist sehr gering, sie beträgt grob geschätzt 11 / (2^31-1) = 0.000000512 % wenn ich mich nicht verrechnet hab)

oder

Zitat von »"MSVC"«

building.cpp(218) : warning C4715: 'building::increase_construction_progress' : not all control paths return a value


die funktion gibt nicht immer was zurück, gleiches problem wie mit den andren funktionen wo das return fehlt. das sind absolut keine kleinigkeiten, sondern mögliche quellen für genau solche "seltsamen fehler"...

34

20.02.2009, 13:13

danke das ihr mich auf all diese fehler hinweist, welche ich zum teil kenne zu mteil auch nicht, was aber nichts daran ändert, das mein problem so ziemlich am ANFANG des programms ist, und das der debugger noch viele sache anzeigt weis ich, mein Problem liegt aber nicht ads der debugger zu wenig anzeigt oder sosnt was, sondern das ich mein programm ohne debugg nicht weit laufen kan, tausende von codezeilen vor den fehlern die ihr hier alle so aufmerksam sammelt, wenn das Problem nicht behoben werden kannv on mir, bis in ca. 3 wochen, dann interessieren die ganzen anderen fehler mal grundsätzlich nicht, klar sind sie nicht schön, aber ich arbeite unter Zeitdruck, weil ich das Projekt fertig bekommen muss, sonst in einem Fach in der Schule ne schlechte note mit vermutlich 5 punkten oder so was um den dreh rum bekomme, das will ich mir nicht unbedingt leisten.

also ich werde die fehler beheben keine frage, aber bitte bitte bitte konzentriert euch entluich mal auf das Problem, das ICH nicht alleine Lösen kann, weil ich nicht weis woher es rührt.
wenn ihr sagt es liegt an den Fehlern die ihr hier aufzählt, halt ich das nicht sehr warscheinlich, aber dann und erst dann, sind diese Fehler jetzt schon von Belang.

Also anstatt mein Programm mit 100 debuggern zu durchforsten, Compiliert es einfach mal normal, und drückt auf die exe, oder den run button in eurem gui, und werden Zeuge von dem -1073741819 fehler, der der Grund des ganzen eintrags ist. danke

// ok letzen eintrag hab ich grad erst gesehen, mal entlich wassinnvolles danke
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

35

20.02.2009, 13:39

so mithilfe eines produktiven Mitglieds, habe ich dnke ich mal nochmal viele fehler entfernt, inkllusive alle fehlerhaften returndinger oder undefinierte integer

http://www.fileuploadx.de/427165

da ist das neue

und der fehler besteht weiterhin
weiterhin selbe zeile weiterhin selber code weiterhin warte ich auf eine Lösung für DIESEN Fehler

aber trotzdem schonmal danke für alle hilfe die schon kam
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

36

20.02.2009, 13:52

Zitat von »"dot"«

also bei mir bricht der debugger wieder ab, und zwar in zeile 62 in save.cpp:

C-/C++-Quelltext

1
    if(this->m_things[ort][ding-1]+anzahl>=0)


wieder das gleiche. ort ist 0, ding ist 1, m_things[0] ist leer, darauf kannst du also nicht zugreifen -> bumm


der fehler is immer noch da. wenn ich die exe so starte dann crashed es auch dort. wenn ich die exe des release build starte dann crashed sie natürlich ohne genaue fehlerbeschreibung. anyway, der releasebuild wird dir sowieso keine auskunft geben wo genau der fehler liegt, da der in der regel vom compiler optimiert ist und sich ein fehler irgendwo an einer ganz andren stelle als der wo er tatsächlich auftritt auswirken kann. abgesehen davon ist etwaige debuginformation für den optimierten code sehr ungenau (um nicht zu sagen wertlos) und jeder debugger wird dir in dem fall blödsinn anzeigen...

37

20.02.2009, 13:54

so hab nochmal aktualisiert, da gibt es noch einen fehler, jetzt dürfte alles stimmen, hab link oben aktualisiert, kannst dir einfach so nochmal ziehen. Also ich kann jetzt mit debugger durchlaufen zeile für zeile, une auser 3 unsigned int mit int comparison, mäckert er nicht mehr

der alte fehler bleibt jedoch ...
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

38

20.02.2009, 13:55

Zitat von »"Hoootie"«

weiterhin warte ich auf eine Lösung für DIESEN Fehler


vielleicht schonmal dran gedacht dass DIESER fehler nur eine folge von all den andren fehlern is gegen deren beseitigung du dich jetzt schon so lange wehrst!?

39

20.02.2009, 13:57

die fehler sind ja jetzt korrigiert, ergo ja ich hab dran gedacht, aber wenn dein debuger wo abstürtzt, wo meiner nicht abstürtzt, dann sag es mir wo, sonst, hmm wüsste nicht welcher fehler es noch sein kann
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

40

20.02.2009, 14:48

wenn ich aus der IDE mit debugger starte funktioniert scheinbar alles, da muss ich dir recht geben.
die debug version stürzt bei mir aber folgendermaßen ab wenn ich sie händisch aus der konsole starte:



(Link)



das deutet darauf hin dass du scheinbar versuchst etwas mit delete freizugeben was entweder schon freigegeben wurde oder nicht mit new angelegt wurde oder du einen pointer hast in dem einfach nur müll drin steht (z.b. nicht initialisiert wurde) und du versuchst diesen zu deleten...

Werbeanzeige