मेरे पास एक जटिल सी ++ कोड है।'स्टैक स्मैशिंग पता चला' डीबग कैसे करें?
यह एक FastCGI कार्यक्रम, का उपयोग कर http://althenia.net/fcgicc
जब मैं एक looooong यूआरएल के लिए यह पूछते हैं, मैं
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
प्राप्त वास्तविक जीवन के लिए है, यह नहीं एक मुद्दा के बाद से मैं इतने लंबे समय यूआरएल का उपयोग कभी नहीं है, लेकिन इसका मतलब है कि कोई भी मेरे सर्वर को समाप्त कर सकता है .... मुझे यह पसंद नहीं है।
क्या कोई उपकरण है (और इसका उपयोग कैसे करें?) यह पता लगाने के लिए कि समस्या कहां दिखाई देती है?
संपादित करें: सोल्व
ठीक हल हो गया।
मैं
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());
कर रहा था कि ऐसा लगता है कि 200 भी लेन परीक्षण के लिए एक hight था। यह वास्तव में 194
में विफल रहता है तो मैंने किया:
if (len > 190) return 1;
अब, यह ठीक है।
स्टैक ट्रेस आपको एक संकेत दे सकता है। 'एररूर डी सेगमेंटेशन' – Mahesh
+1 स्टैक ट्रेस क्या है? – trojanfoe
के लिए – user1219721