![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 03.03.2018
Сообщений: 17
|
![]()
Здравствуйте.
Подскажите, пожалуйста, в какую сторону стоит копать, когда падает программа при выходе из функции? Всё обложил логированием и вижу, что именно после return программа падает. В чём может быть суть? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
![]()
Код покажите или секрет?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 03.03.2018
Сообщений: 17
|
![]()
Код огромный и коммерческий.
В голову приходит только одно - мы где-то затираем адрес возврата из функции. Переполнение буфера где-то. Как понять можно где? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
![]()
А также выход за границы массива, неправильная адресная арифметика, ошибка в каком-то деструкторе, операторе копирования/перемещения, ...
Прогоните статическим анализатором или включите адрессанитайзер. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 03.03.2018
Сообщений: 17
|
![]() |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
![]() |
![]() |
![]() |
![]() |
#7 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
![]()
в неопределённом поведении
без кода сложно сказать, где именно. Сначала пройтись статическим анализатором на максималках (это может быть шокирующим приключением, однако) Если логами не ловится, значит тихо портится память, а стреляет в каком-нибудь деструкторе. Делаем новую ветку проекта в GIT, определяем, после какого действия появляется ошибка. Затем понемногу вырезаем функционал, пока ошибка не "пропадает". Последнее вырезанное - скорее всего примерная локализация бага Но довольно часто помогает просто запуск на отладку без точек останова - дебаггер умеет останавливаться на некоторых сомнительных манипуляциях с памятью |
![]() |
![]() |
![]() |
#8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Обычно это неправильные указатели или выход индекса за границы массива.
Неправильные указатели в 90% связаны с утечкой памяти или Обращение к удаленному объекту. Выход за пределы массива проверяется, к примеру с использованием ключа https://codeforces.com/blog/entry/13875 Или статического анализатора кода https://pvs-studio.com/ru/blog/terms/0071/ Утечки памяти ловим как описано в статье: https://pro-prof.com/forums/topic/cpp_memory_leaks Так же для прочих проблем с указателями стоит овладеть динамическим анализатором кода Valgrind.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
При удалении класса происходит segmentation fault | gunsoy | Общие вопросы C/C++ | 24 | 19.08.2015 20:27 |
C++ vector segmentation fault | Misa | Помощь студентам | 4 | 08.01.2015 19:02 |
Segmentation fault | Hemul | Общие вопросы C/C++ | 7 | 16.08.2011 03:23 |
QT4 segmentation fault | jojahti | Qt и кроссплатформенное программирование С/С++ | 6 | 06.01.2010 09:57 |
GCL и segmentation fault. | jojahti | Свободное общение | 0 | 14.09.2009 19:20 |