Tôi có một mã C++ phức tạp.Làm cách nào để gỡ lỗi 'Phát hiện ngăn xếp ngăn xếp'?
Đó là một chương trình FastCGI, sử dụng http://althenia.net/fcgicc
Khi tôi hỏi nó cho một url looooong, tôi nhận được
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
Đối với cuộc sống thực, nó không phải là một vấn đề vì tôi không bao giờ sử dụng url rất lâu, nhưng nó có nghĩa là bất cứ ai có thể chấm dứt máy chủ của tôi .... Tôi không thích điều đó.
Có công cụ nào (và cách sử dụng công cụ này không?) Để tìm ra sự cố xuất hiện ở đâu?
CHỈNH SỬA: SOLVED
Ok đã giải quyết xong.
tôi đang làm
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());
Hình như đó 200 là quá Hight cho kỳ thi len. Nó thực sự thất bại tại 194.
Vì vậy, tôi đã làm:
if (len > 190) return 1;
Bây giờ, nó là tốt.
Theo dõi ngăn xếp có thể cung cấp cho bạn gợi ý. – Mahesh
+1 cho 'Erreur de segmentation' – trojanfoe
Dấu vết ngăn xếp là gì? – user1219721