|
You last visited: Today at 06:24
Advertisement
C++ - Enum verursacht crash
Discussion on C++ - Enum verursacht crash within the C/C++ forum part of the Coders Den category.
12/07/2014, 14:30
|
#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ß
|
|
|
12/07/2014, 14:43
|
#2
|
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.
|
|
|
12/07/2014, 14:55
|
#3
|
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
|
Quote:
Originally Posted by Dr. Coxxy
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
|
|
|
12/07/2014, 15:01
|
#4
|
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?
|
|
|
12/07/2014, 18:01
|
#5
|
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?
|
|
|
12/07/2014, 19:57
|
#6
|
elite*gold: 13849
Join Date: Oct 2014
Posts: 673
Received Thanks: 219
|
Quote:
Originally Posted by MrSm!th
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
|
|
|
12/08/2014, 17:01
|
#7
|
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.
|
|
|
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.
|
|
|
 |
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.
|
|