Как отладить «*** обнаружено переполнение буфера ***: имя_программы прекращено» вместе с _FORTIFY_SOURCE=2

Моя программа вылетает с сообщением «*** обнаружено переполнение буфера ***: имя_программы прекращено», и я подозреваю, что это может быть связано с параметром компилятора «_FORTIFY_SOURCE=2», который я использую (источник: разница между gcc -D_FORTIFY_SOURCE =1 и -D_FORTIFY_SOURCE=2).

И вообще, как найти пункт программы, выдающий такую ​​ошибку?

Вы использовали отладчик? Велика вероятность, что это приведет вас прямо к линии нарушения.

Stephen Newell 06.07.2024 06:16

Я могу попробовать, у меня такое ощущение, что какой-то дополнительный код, добавленный компилятором, заставляет программу нормально завершить работу, не уверен, что GDB сможет его захватить, но попробую, спасибо!

user180574 06.07.2024 06:24
it looks to me some extra code added by the compiler Это то же самое, что и FORTIFY_SOURCE: он добавляет компилятору дополнительный код, который завершает работу при определенных условиях.
KamilCuk 06.07.2024 17:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

И вообще, как найти пункт программы, выдающий такую ​​ошибку?

Для этой конкретной ошибки запуск программы под отладчиком сразу сообщит вам, где произошла ошибка.

Я могу попробовать, мое ощущение такое...

Вы должны попробовать это, и ваше чувство ошибочно.

P.S. Создание программы с помощью -fsanitize=address (если ваша среда компиляции и выполнения поддерживает это) и ее запуск могут привести к появлению более информативного сообщения об ошибке.

Другие вопросы по теме