Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редкий крах программы. 
:(
    Опции темы
OlegIT
Дата 1.9.2016, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Программа на Qt под Android очень редко вылетает, без видимых причин. Как определить в каком модуле, в какой строке произошёл крах? 

PM MAIL   Вверх
Alca
Дата 1.9.2016, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Возможно stack trace получить
https://gist.github.com/jvranish/4441299

Это сообщение отредактировал(а) Alca - 1.9.2016, 15:04


--------------------
PM WWW ICQ Skype Jabber   Вверх
OlegIT
Дата 2.9.2016, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Спасибо, попробую.
PM MAIL   Вверх
Alca
Дата 2.9.2016, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



И всё это собирай в дебаге


--------------------
PM WWW ICQ Skype Jabber   Вверх
OlegIT
Дата 7.9.2016, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Включил в проект файл stack_traces.c, собрал, запустил. Но забыл убрать из кода мейн в файле stack_traces, mingv собрала программу и не выдала даже предупреждения, что в программе два мейна, это я понял, когда программа упала на тестовой ошибке. Это что, баг компилятора или...?
PM MAIL   Вверх
Alca
Дата 7.9.2016, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



хз, ты stack trace получил?


--------------------
PM WWW ICQ Skype Jabber   Вверх
OlegIT
Дата 7.9.2016, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



stack trace получил, несколько уровней, правда только в виндах, до андройда пока не добрался. Но там только адреса, сбойной команды и вызывающих функций, а как это всё в исходный код странслировать? 
PM MAIL   Вверх
Alca
Дата 7.9.2016, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Цитата

Но там только адреса, сбойной команды и вызывающих функций, а как это всё в исходный код странслировать? 

Надо, чтобы все было собрано в дебагe, чтоб была включена отладочная информация (символы), погугли какие там ключи нужны для сборки (т.е. Qt должна быть собрана с этими ключами или что-там еще)

Это сообщение отредактировал(а) Alca - 7.9.2016, 15:42


--------------------
PM WWW ICQ Skype Jabber   Вверх
OlegIT
Дата 8.9.2016, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Утилита addr2line как я понимаю преобразует адрес в номер строки или как то так, сейчас буду разбираться.
PM MAIL   Вверх
OlegIT
Дата 9.9.2016, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Скачал winaddr2line подправил код обращение к этой программе, в ней возникает ошибка, код 487 "Попытка обратиться к неверному адресу". В чём может быть проблема?
PM MAIL   Вверх
Alca
Дата 9.9.2016, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



да в чем угодно. Скорее всего это в твоем коде косяк

Это сообщение отредактировал(а) Alca - 9.9.2016, 15:20


--------------------
PM WWW ICQ Skype Jabber   Вверх
OlegIT
Дата 9.9.2016, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Не думаю, что это в моей программе ошибка, работает stack_traces и ddr2line, моей программы тут уже нет, она уже лежит.
stack_traces.c выдаёт список адресов, проверял они правильные, запускаю winaddr2line с соответствующей строкой аргумента, на некоторые адреса выдаёт ошибку 487, на другие 126.
PM MAIL   Вверх
maint
Дата 9.9.2016, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 12.5.2008

Репутация: нет
Всего: 2



сто пудов где то ошибка адресациию Полгода мучался и ругал матерным словом голливуд, пока не понял. 

Это сообщение отредактировал(а) maint - 9.9.2016, 16:26
PM   Вверх
OlegIT
Дата 9.9.2016, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Не могу пока понять этих ошибок, одна по адресации, другая по отсутствую модуля и все после прохождения функции SymFromAddr(...); в winaddr2line.
PM MAIL   Вверх
OlegIT
Дата 12.9.2016, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Разобрался с этим вопросом, всё просто оказалось. Уйму времени потратил на winaddr2line, а она работает. В комплекте mingw есть программа addr2line, которая прекрасно работает. Но эта программа работает с консолью и максимум что мне удалось это для каждого вызова сделать свой лог файл. А как получить выход программы addr2line в своей программе, из которой я её вызываю?
PM MAIL   Вверх
Alca
Дата 12.9.2016, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
OlegIT
Дата 12.9.2016, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Разобрался и с этим, запускать консольное приложение нужно не через system(...), а через QProcess и далее методы класса.
PM MAIL   Вверх
OlegIT
Дата 23.9.2016, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Добрался я до сборки под Android, нет файла execinfo.h. Как я понимаю возможно не будет и других файлов включённых в execinfo.h. Может что дополнительно установить нужно?
А ещё и библиотеки ldbghelp нет.

Это сообщение отредактировал(а) OlegIT - 23.9.2016, 22:19
PM MAIL   Вверх
bsa
Дата 26.9.2016, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



А нельзя разве из-под отладчика (пусть даже удаленного - "remote") запустить? При крахе программа упадет в отладчик и можно будет что-то исследовать. Но по моему опыту, очень часто подобные ошибки "повреждение памяти" может всплывать в вообще случайных местах, и отладчиком понять что происходит невозможно, только или valgrind (многое находит, но работает под linux), или аналитически путем поиска и устранения всех узких мест программы. Наиболее частое - выход за пределы массива и работа с массивом в освобожденной области памяти. Поэтому, после каждого delete/free нужно поставить зануление указателя, вспомнить, что вектор инвалидирует все указатели при добавлении новых элементов, перевести все контейнеры в режим отладки так, чтобы они следили за доступом за пределы выделенной памяти... К сожалению, других способов нет.
PM   Вверх
OlegIT
Дата 26.9.2016, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Цитата(bsa @  26.9.2016,  13:30 Найти цитируемый пост)
А нельзя разве из-под отладчика (пусть даже удаленного - "remote") запустить? При крахе программа упадет в отладчик и можно будет что-то исследовать.

Увы нельзя, падение происходит при автономной работе, на планшете и редко, так что пока лучше чем лог файл ни чего не вижу. У меня падений ни разу не было, хоть и работаю с программой много, но в основном под виндами.
Мне бы сейчас понять причину падения, деление на ноль, работа с памятью..., а потом локализацией займусь.

Это сообщение отредактировал(а) OlegIT - 26.9.2016, 14:19
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.