problem unter linux "segmentation faul"
-
Moin
Ich habe eine datei in windows geschrieben die dort auch gut functioniert doch wenn ich sie unter linux compiliere
-> g++ -L/usr/lib -I/usr/include/mysql -lmysqlclient -g -Wall -ostart ./start.cpp "-Wno-deprecateion <- weiss grade nicht wie das genau geschreiben wir ist dafür damit man die fehlermeldung ausschalted das er iostream haben will und nicht iostream.h oder so da weiss ich auch nicht genau was das bedeuted auf jedenfall kann ich so cout benutzen"Der eigendliche fehler ist wenn ich die datei starten will -> ./start dann kommt die meldung "segmentation fault" was bedeuted das oder was mach ich falsch
-
du schreibst wild im Speicher rum. Wenn du ein Debugger benutzt, solltest du das Problem schnell finden.
-
also ich hab jetzt nen debugger drüberlaufenlassen ui das siht aber nich gut aus
wenn ich zbsp
-> char puffer[1000]
-> strcpy(puffer, "SELECT * FROM");
-> strcat(puffer,"adsfsd"); uswscheinbar klapt sowas nicht was hab ich denn dann teoretisch falsch gemacht
oder noch ne frage was nehm ich in linux für eine function um den srcipt anzuhalten da Sleep() scheinbar nicht funst
Naja muss wohl alles neuschreiben wir echt arbeit
-
hallo,
ich wuerde mit dem typ string statt mit char arbeiten.
es gibt viele vorteile. Zum einen muss man sich nicht mit den einzelnen bytes rumschlagen. Ich bin zawr auch nicht der c/c++ coder aber hier ein beispiel:#include <iostream> using namespace std; #include <unistd.h> // man 3 sleep int main(int argc, char *argv[]){ // deklariere string objekt, kuemmere dich nicht um die groesse: string string_buf; // schreibe Text rein, kuemmere dich nicht um die groesse: string_buf = "SELECT * FROM"; // gebe status aus: cout << '\n' << "string_buf" << '\n' << "\tInhalt: " << string_buf << '\n' << "\tLaenge: " << string_buf.length() << endl; // konvertieren zum char mit c_str() // .c_str() fueght gegenueber .data \0 Byte an: // kuemmere dich nicht um die groesse: const char * char_buf = string_buf.c_str(); // gebe status aus: cout << '\n' << "char_buf\n" << '\n' << "\tInhalt: " << char_buf << '\n' << "\tLaenge: " << strlen(char_buf)<< endl; string_buf += " "; string_buf += " fuege text hinzu, kuemmere dich nicht um die groesse :-)"; cout << "\n\n" << string_buf << endl; printf("\n<ende>waiitiiin 3 seconds \n"); sleep(3); printf("</ende>\n"); return 0; }
Wenn du bei den standard C I/O Bibliotheken bleibst,
rate ich Dir statt strcpy(2) und strcat(2), strncpy(2) und strncat(2) zu verwenden, warum ist beannt und steht in der manpage, man 2 strncat.gruesse
-
Erstmal danke hat mir geholfen!!!
Jetzt hab ich arber wirgelich nen schwerwiegendes problem
ich hab versucht nen scritp zu schreiben doch der ferursacht schon wieder "segmentation fault" unter linux in windows alles gut aber eben nicht unter linux.
Ich hab den fehler Eingekrenst und hoffe das ihr das lösen könnt!!!! ->Was mich wundert ist das die hedder bei der linux version dabei wahren aber trotsdem gib er mir fehler aus wenn ich die functionen benuteze
dieses row = mysql_fetch_row(res); ist eindeutig das problem da ich alles nacheinander wegelassen habe und nur dort ein problem auftaucht
oder kann es sein das da es ja ne c bibilotek ist es zu fehlern -kommt weil ich es mit g++ kompiliere (währe echt nicht gut)
aber schaut mal ob ihr mir helfen könnt->include
->
->int main (void)
->{
->
->MYSQL *conn;
->MYSQL_ROW row;
->MYSQL_RES res;
->conn = mysql_init(NULL);
->mysql_real_connect(conn, "localhost","root","","dasspiel",0,NULL,0);mysql_query(conn, "SELECT * FROM bewegen");
res = mysql_store_result(conn);
row = mysql_fetch_row(res); <- hier liegt das problemshit ich weiss garnicht wass ich machen soll wenn ich nicht das problem finde dann kann ich das ganze problem vergessen,
ich hab noch was anderes probiert : mit mysql++ als der eingebundenen hedder sqlplus.hh stimmt auch nicht die gibt massig fehler aus beim compilieren, welche lib musss ich den zu sqlplus einbinden, daran könnte der fehler auch liegen, das ich die falsche eingebunden habe.
}
-
mh es waere hilfreich wenn Du:
- den kompletten Code pasten wuerdest.
- den code innerhalb der Highlight Funktion schreiben wuerdest.
- uns ueber die Fehlermeldung des Compilers informieren wuerdest, dabei ist -Wall statt -Wno-deprecateion glaube ich hilfreicher.
rein formal ...
gruesse
-
genau das ist das problem es gibt keinen fehler beim compiler und das ist der code, nur wenn ich die compilierte datei in der console unter linux öffene kommt die fehlermeldung "segmentation faul"
include <mysql.h> int main (void) { MYSQL *conn; MYSQL_ROW row; MYSQL_RES *res; conn = mysql_init(NULL); mysql_real_connect(conn, "localhost","root","","dasspiel",0,NULL,0); mysql_query(conn, "SELECT * FROM bewegen"); res = mysql_store_result(conn); row = mysql_fetch_row(res); //<- hier liegt das problem }
PS:es ist echt wichtig das ich das hinbekomme
-
ich glaub ich habs wehalb immer segmentation faul das ist der gleiche fehler wie in window fatal error er kann nicht mit row = mysql_fetch_row auslesen weil die tabelle nicht exesteit und so gibt er dann einen fehler aus
ich hoffe das sich damit das problem gelöst hat noch mal danke wegen den posts