GDB stürtzt ab
-
Hallo zusammen,
ich will ein wenig Code testen. Leider stürzt mein Netbeans/GDB mit Returncode 139 /Segmentation violation ab. Jemand ne Idee woran das liegt? Mein Testcase ist sehr einfach:
int main(int argc, char** argv) { int a = 2; cout << "this is a test " << endl; //encode the query uint8_t data[13]; data[0] = 164; data[1] = 13; data[2] = 0; data[3] = 36; data[4] = 0; data[5] = 1; data[6] = 2; data[7] = 50; data[8] = 0; data[9] = 1; data[10] = 146; data[11] = 65; data[12] = 80; DSMHeader header; //store query lenght header.message_length = 101; // AST ast; return (EXIT_SUCCESS); }Wenn ich die Zeile mit dem AST ast; reinnehme, stürtzt er ab. Dies is ein leerer Konstruktor, also eigentlich steht da nur in der Klasse:
AST::AST(){ }//End ASTJemand nen Tipp? Ich bin echt am durchdrehen.
uwe
-
Was passiert, wenn du die beiden Statements mit
headerauch noch auskommentierst? Versuch auf diese Weise (und in Kombination mit dem Debugger), den Fehler einzuschränken.
-
Hallo,
also am DSMHeader liegt es nicht. Wenn ich:
- DSMHeader + AST Zeilen auskommentiere -> keine Probleme
- DSMHeader auskommentier, AST nicht auskommentiert -> Absturz
- DSMHeader nicht auskommentiert, AST auskommentiert -> keine Probleme
- DSMHeader + AST nicht auskommentiert -> Absturz
uwe
-
Ist das da oben der vollständige Code von der
main?Grüssli
-
Hallo zusammen,
also ich habe ein wenig rumdebugged und festgestellt, dass das Problem aus einer tieferen Klasse kommt. In der Klasse AST erstelle ich ein Objekt der Klasse ASTTerm. Diese soll eigentlich ne statische Liste von ASTTerms enthalten, welche ich dann über den new Operator sozusagen ausgebe. Die Art und Weise hab ich hier her:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1688874.html#1688874In der Klasse ASTTerm habe ich:
ASTTerm.h:
[...] //define a list to store all terms static ASTTerm termList[DSM_TERM_CNT_MAX]; //this index points to the next free element in the storage static size_t termListIndex;ASTTerm.cpp:
//init the static counter for the simulated dynamic storage allocation size_t ASTTerm::termListIndex = 0; int ASTTerm::test[10]; ASTTerm ASTTerm::termList[DSM_TERM_CNT_MAX];Beim initialisieren der termList geht er auf die Bretter. Also muß ich wohl die ASTTerms in einer anderen Liste speichern. Muß ich dann ein char Array o.ä. nehmen? Oder kann man es doch irgendwie mit ASTTerm machen. Ich vermute mal nicht, da es ja sonst wie Baron Münchhausen wäre ...
So?:
char ASTTerm::termList[sizeof(ASTTerm)*DSM_TERM_CNT_MAX];Uwe
-
Hi,
ich habe mein Fehler erkannt. War doof. Alles klar, nun gehts

Dank für Eure Hilfe.
Uwe