Моя программа вылетает с сообщением «*** обнаружено переполнение буфера ***: имя_программы прекращено», и я подозреваю, что это может быть связано с параметром компилятора «_FORTIFY_SOURCE=2», который я использую (источник: разница между gcc -D_FORTIFY_SOURCE =1 и -D_FORTIFY_SOURCE=2).
И вообще, как найти пункт программы, выдающий такую ошибку?
Я могу попробовать, у меня такое ощущение, что какой-то дополнительный код, добавленный компилятором, заставляет программу нормально завершить работу, не уверен, что GDB сможет его захватить, но попробую, спасибо!
it looks to me some extra code added by the compiler
Это то же самое, что и FORTIFY_SOURCE
: он добавляет компилятору дополнительный код, который завершает работу при определенных условиях.
И вообще, как найти пункт программы, выдающий такую ошибку?
Для этой конкретной ошибки запуск программы под отладчиком сразу сообщит вам, где произошла ошибка.
Я могу попробовать, мое ощущение такое...
Вы должны попробовать это, и ваше чувство ошибочно.
P.S. Создание программы с помощью -fsanitize=address
(если ваша среда компиляции и выполнения поддерживает это) и ее запуск могут привести к появлению более информативного сообщения об ошибке.
Вы использовали отладчик? Велика вероятность, что это приведет вас прямо к линии нарушения.