Russian Qt Forum
Ноябрь 24, 2024, 02:59
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
Неуловимая ошибка ведущая к краху программы
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Неуловимая ошибка ведущая к краху программы (Прочитано 6582 раз)
catprog
Гость
Неуловимая ошибка ведущая к краху программы
«
:
Май 15, 2012, 14:57 »
Есть не маленькая прога, очень долго работает и по неведомым причинам через несколько часов работы например, может возникнуть ошибка "segmentation fault". В связи с такой редкой случайностью отладить очень трудно. Подскажите пожалуйста, что можно прописать в код, чтобы если где либо возникнет эта ошибка, случился перехват, который определит место в коде и запишет его в лог.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #1 :
Май 15, 2012, 15:08 »
пускать через debugger и ловить backtrace
Записан
catprog
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #2 :
Май 15, 2012, 15:12 »
Цитата: Alex Custov от Май 15, 2012, 15:08
пускать через debugger и ловить backtrace
Допустим поймал эту ошибку дебагером, как мне пройтись по коду в обратном порядке?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #3 :
Май 15, 2012, 15:29 »
А зачем в обратном? Тебе нужен стек вызовов.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
catprog
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #4 :
Май 15, 2012, 18:09 »
Цитата: Пантер от Май 15, 2012, 15:29
А зачем в обратном? Тебе нужен стек вызовов.
Ну стек такой есть. Полезно конечно, но было бы удобно иметь возможность перед возникновением ошибки, записать в лог все что можно.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #5 :
Май 15, 2012, 18:14 »
Цитата: catprog от Май 15, 2012, 18:09
Ну стек такой есть. Полезно конечно, но было бы удобно иметь возможность перед возникновением ошибки, записать в лог все что можно.
segfault - это фатальный сигнал, можешь пробовать его перехватывать через signal(2) и записывать какие-то данный в логи, но это легко может не работать. Если стек есть, то он должен натолкнуть на мысли.
«
Последнее редактирование: Май 15, 2012, 18:36 от Alex Custov
»
Записан
V1KT0P
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #6 :
Май 15, 2012, 18:41 »
Цитата: catprog от Май 15, 2012, 15:12
Цитата: Alex Custov от Май 15, 2012, 15:08
пускать через debugger и ловить backtrace
Допустим поймал эту ошибку дебагером, как мне пройтись по коду в обратном порядке?
Посмотри настройки или плагины для valgrind, должна быть возможность записи вызовов всех функций. Но он только под Linux.
Записан
catprog
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #7 :
Май 15, 2012, 20:28 »
Цитата: Alex Custov от Май 15, 2012, 18:14
segfault - это фатальный сигнал, можешь пробовать его перехватывать через signal(2) и записывать какие-то данный в логи, но это легко может не работать. Если стек есть, то он должен натолкнуть на мысли.
А какой объект выдает этот сигнал?
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #8 :
Май 15, 2012, 20:46 »
Цитата: catprog от Май 15, 2012, 20:28
А какой объект выдает этот сигнал?
Это сигнал от ядра. man 7 signal
Записан
catprog
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #9 :
Май 31, 2012, 17:53 »
Цитата: Alex Custov от Май 15, 2012, 20:46
Цитата: catprog от Май 15, 2012, 20:28
А какой объект выдает этот сигнал?
Это сигнал от ядра. man 7 signal
А можно пример кода по ловле этого сигнала с использованием этой функции:
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) [static]
а то чтото я нахожу постороннее по этому запросу.
Записан
mutineer
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #10 :
Май 31, 2012, 17:56 »
Цитата: catprog от Май 31, 2012, 17:53
Цитата: Alex Custov от Май 15, 2012, 20:46
Цитата: catprog от Май 15, 2012, 20:28
А какой объект выдает этот сигнал?
Это сигнал от ядра. man 7 signal
А можно пример кода по ловле этого сигнала с использованием этой функции:
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) [static]
а то чтото я нахожу постороннее по этому запросу.
Так не получится поймать - это сигнал не Qt, а операционной системы
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #11 :
Май 31, 2012, 18:03 »
Цитата: catprog от Май 31, 2012, 17:53
А можно пример кода по ловле этого сигнала с использованием этой функции:
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) [static]
а то чтото я нахожу постороннее по этому запросу.
Это сигнал от ядра приложению, к Qt это не имеет никакого отношения. Читай man 7 signal и man 2 signal.
Записан
DmitryM
Гость
Re: Неуловимая ошибка ведущая к краху программы
«
Ответ #12 :
Май 31, 2012, 22:03 »
В Linux и Windows есть возможность сделать дамп памяти в момент краха приложения.
Далее дамп засовываем в отладчик и смотрим стек вызовов.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...