私は複雑なC++コードを持っています。「Stack smashing detected」をデバッグする方法は?
それは私がそう長いURLを使用することはありませんので、私はlooooong URLのためにそれを頼むとき、私は現実の生活のために
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
を使用して、それは問題ではありません、FastCGIのプログラムですが、それは誰でも私のサーバーを終了することができることを意味....私はそれが好きではない。
どこに問題があるのかを知るためのツール(および使用方法)がありますか?
EDIT:
を解決してOKが解決しました。その200がlenテストのためにあまりにも絶頂だったように私は
int len;
char uri[200];
len = strlen(request.params[std::string("REQUEST_URI")].c_str());
printf("%d\n", len);
if (len > 200) return 1;
strcpy(uri, request.params[std::string("REQUEST_URI")].c_str());
をしていた
が見えます。 それは実際に194
で失敗したので、私がやった:
if (len > 190) return 1;
は今、それは大丈夫です。
スタックトレースによってヒントが得られます。 – Mahesh
+1 'Erreur de segmentation'の場合 – trojanfoe
スタックトレースとは何ですか? – user1219721