Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 06:24

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ - Enum verursacht crash

Discussion on C++ - Enum verursacht crash within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
C++ - Enum verursacht crash

Hey leute,
ich arbeite grad an einer Engine und dort wollte ich mal ein Enum hinzufügen zu einer vorhanden Liste von Enums.
Das sieht dann so aus:
Code:
        ENUM_11 = 11,
	ENUM_12= 12,
	ENUM_TOTAL= 13,
Vorher ging es nur bis ENUM_11 und ENUM_TOTAL war 12, ich starte das Game beim ersten mal geht es (der Enum wird noch nirgends benutzt) dann restarte ich das Spiel und es startet sich kurz dann gibts nen Error vom Client.
Jetzt mal zu der eigentlichen frage, wenn ich das alles mit Visual Studio starte also per F5, dann passiert kein Fehler und es geht.
Ich hab versucht auf Debug zu Compilen und es hat auch nichts gebracht, nun wollt ich wissen was setzt der Debugger da für Flags das es geht?
Es muss ja ein Grund haben warum es in VS geht und normal im Release/Debug nicht.
Gruß
Lee Ki-Hwan is offline  
Old 12/07/2014, 14:43   #2
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
wird vermutlich i-wo ne for schleife gehen die von 0 bis ENUM_TOTAL geht und da i-etwas macht, was dann vermutlich beim letzten failt, musst du mal guckn.
ansonsten kannste auch so nen debugger @ runtime ranhängen und einfach nachgucken wos crasht.
Dr. Coxxy is offline  
Thanks
1 User
Old 12/07/2014, 14:55   #3
 
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
Quote:
Originally Posted by Dr. Coxxy View Post
wird vermutlich i-wo ne for schleife gehen die von 0 bis ENUM_TOTAL geht und da i-etwas macht, was dann vermutlich beim letzten failt, musst du mal guckn.
ansonsten kannste auch so nen debugger @ runtime ranhängen und einfach nachgucken wos crasht.
Hab alles mit breakpoints versetzt es wird nirgendswo gecallt bis man nicht ingame komme und das Inventar aufmacht
Lee Ki-Hwan is offline  
Old 12/07/2014, 15:01   #4
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
vllt gibts im client i-wo nen hash check ob das spiel modifiziert wurde, der ignoriert wird wenn nen debugger dranhängt?
Dr. Coxxy is offline  
Thanks
1 User
Old 12/07/2014, 18:01   #5


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Das wäre ja ein sehr nützlicher Schutz gegen Modifikationen. ;O

Arbeitetet der Code, den du kompilierst, mit anderen Binaries zusammen? Also welche, die du nicht selbst kompilierst? Wenn ja, ist ihnen die Enum bekannt und verwenden sie diese?
Enums haben an sich keine garantierte, feste Größe. "Crash" ist zwar keine sehr detallierte Fehlerbeschreibung, aber wenn es wirklich einfach nur abstürzt, klingt das nach einer ungefangenen Exception und das sind bei nativen Anwendungen meistens falsche Speicherzugriffe. Ich könnte mir vorstellen, dass die Enum durch deine Ergänzung (oder vielleicht einfach, weil du einen anderen Compiler nutzt) eine andere Bytegröße zugewiesen bekommen hat und deswegen irgendwo ein Zugriff auf eine Variable des Typs dieser Enum nicht mehr funktioniert.

Mehr fällt mir bei diesen dürftigen Informationen jetzt nicht ein. Geht es um ein Open Source Spiel oder ist es vollständig von dir?

Quote:
dann gibts nen Error vom Client.
Was für einen?
MrSm!th is offline  
Thanks
1 User
Old 12/07/2014, 19:57   #6
 
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
Quote:
Originally Posted by MrSm!th View Post
Das wäre ja ein sehr nützlicher Schutz gegen Modifikationen. ;O

Arbeitetet der Code, den du kompilierst, mit anderen Binaries zusammen? Also welche, die du nicht selbst kompilierst? Wenn ja, ist ihnen die Enum bekannt und verwenden sie diese?
Enums haben an sich keine garantierte, feste Größe. "Crash" ist zwar keine sehr detallierte Fehlerbeschreibung, aber wenn es wirklich einfach nur abstürzt, klingt das nach einer ungefangenen Exception und das sind bei nativen Anwendungen meistens falsche Speicherzugriffe. Ich könnte mir vorstellen, dass die Enum durch deine Ergänzung (oder vielleicht einfach, weil du einen anderen Compiler nutzt) eine andere Bytegröße zugewiesen bekommen hat und deswegen irgendwo ein Zugriff auf eine Variable des Typs dieser Enum nicht mehr funktioniert.

Mehr fällt mir bei diesen dürftigen Informationen jetzt nicht ein. Geht es um ein Open Source Spiel oder ist es vollständig von dir?

Was für einen?
Ist ein älteres MMO von Koreaner programmiert und nein es ist nicht Open-Source.
Also du hast aufjedenfall recht mit deiner Aussage es ist eine ACCESS_VIOLATION exception.

Ich frage mich aber warum funktioniert es mit VS6 tadellos (im Debug modus).
Und ja ich arbeite mit mehreren Binaries und ich hab überall geguckt und breakpoints gesetzt ich wollte wissen ob der Enum irgendwo aufgerufen wird, aber das ist nicht der fall.

Es ist komisch das es manchmal geht und manchmal nicht.
Dazu kommt noch wenn es dann geht, funktioniert der EXIT button im Login-Interface nicht mehr, wobei ich nur ein Enum hinzufüge für das Inventar/Rüstungen..

Im code wird das meistens mit einem Loop verwendet um dann den aktuellen "wearing status" zu setzen, sprich am anfang wird geloopt und alles auf NULL gesetzt, das funktioniert auch, aber danach crasht der Client direkt und das in irgendeiner Funktion die nichts damit zutun hat, diese Funktion setzt einfach einen String im Interface, z.B den Klassen-Namen.

Ich weiss nicht wo ich anfangen soll
Lee Ki-Hwan is offline  
Old 12/08/2014, 17:01   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Ich glaube, auf einer so abstrakten Stufe wird das nichts. Da müsste man schon konkreter wissen, was das für ein Enum ist und wie es wo verwendet wird. Ich glaube ohne Einsicht in den Code kann man da wenig "debuggen".
Du könntest mal die Exception catchen und die Adresse, an der sie auftritt, sichern. Dann mit einem Debugger wie Olly zur Laufzeit attachen und schauen, was da vor sich geht.
MrSm!th is offline  
Thanks
1 User
Old 12/18/2014, 16:27   #8
 
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
Das Problem ist ich finde nichtmal wo ich die Exception catchen müsste.
Visual Studio 6 zeigt irgendwelche Funktionen wie GetStringFromID(int id),
das ist aber eher unwahrscheinlich da genau das klappt mit der selben ID ect wenn der Enum draussen ist

Und dazu kommt noch das es irgendwie manchmal Funktioniert und manchmal nicht, also ab und zu starte ich einfach die .exe und es geht alles (bis auf den Exit button der funzt dann irgendwie nicht mehr) es is schon gewaltig komisch aber naja, ich versuch nacher mehr in Erfahrung zu bringen wird aber wohl erst morgen gehen können.

Ich werde nacher mal Code snippets reinmachen, vielleicht hilft es.
Lee Ki-Hwan is offline  
Reply


Similar Threads Similar Threads
ENUM 4STORY
12/01/2014 - 4Story - 15 Replies
I WANT ENGLISH FILES FOR ENUM 4STORY PLEASE TELL ME WHAT I CAN DO AND I WILL DO IT !!
C++ - Enum C2011 Error
02/22/2013 - C/C++ - 4 Replies
Hi, Ich wollte in C++ eine Enum in einer Headerdatei auslagern, aber wenn ich es Compilieren möchte erhalte ich nur: error C2011:'Punkte':'enum'Typneudefinition meine Enum sieht wie folgt aus: enum Punkte{ BONUSPUNKTE = 35, FULLHOUSEPUNKTE = 25,
Fulgzeug mod Verursacht Minecraft crash.
03/22/2011 - Minecraft - 5 Replies
Tag zusammen. Ich habe mit den Flugzeug mod für MC installiert (Planes - Minecraft Forums) Es funktioniert alles wie es sollte jedoch stürzt MC wenn ich fliege nach kurzer Zeit ab. Ich habe alles ordnungs gemäß installiert. Hat irgendjemand eine Lösung für dieses Problem?
[HELP] public enum
10/24/2009 - CO2 Private Server - 5 Replies
anyone here can help this? public enum UpdateID : uint { None = 0xFFFFFFFF, Hitpoints = 0, MaxHitpoints = 1, Mana = 2, MaxMana = 3, Money = 4, Experience = 5,



All times are GMT +1. The time now is 06:24.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.