![]() |
|
|
![]()
|
|
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Значит такая тема.
Есть программа. Раньше я её писал и дорабатывал в XP, и всё было ништяк. Потом юзера мне сказали, что она на одних компах работает, а на других - нет, то есть просто не запускается. Я тут как раз новый комп получил с Windows 7 на борту и в ней тоже не работает. То есть из Visual Studio 2008 запускается (правда там сообщение выскакивает), а когда запускаю exe-шник - не пашет. Сообщение при компиляции такое: "Debuging information for 'ApplyName' cannot be found or does not match. Binary was not built with debug information. \n Do you want to continue debugging?" - отвечаю "Да", и после этого прога работает как надо. Когда запускаю прогу из экзешника вижу сообщение: "Прекращена работа программы "ApplyName.exe" и три опции: - Искать решение проблемы в Интернете и закрыть - Закрыть программу - Отладить программу. Выбираю "Закрыть программу". Если у кого-то возникнут вопросы о dll-инах которые должны лежать рядом с exe-хой и которые, (судя из контекста) могли перекочевать из XP в семёрку или из одной версии Qt в другую, то полагаю, что с ними (dll-инами) всё путём, т. к. я их для этого нерабочего проекта брал из установки Qt с этого компа. Мною были совершены попытки отыскания данной ошибки путём расстановки команд записывающих всякое в буфер обмена. Т. е. после этого можно запустить приложение, оно вырубится, а потом зная, что осталось в буфере определить где программа ещё точно выполнялась, и где уже точно выполняться перестала. Эти команды были раскиданы в нескольких местах в конструкторе главной формы. Результат улыбнул. Программа стала работать и из среды, и из экзешника. Когда удалил запись в буфер обмена - ситуация повторилась. Снова добавил - снова всё разарботало. Искал так же путём комментирования всего конструктора (всё работало ото всюду) и дальнейшего раскомментирования в целях найти то место, которое вызывает глюк. В результате выяснил, что по каким-то причинам место глюка кочует из одной точки программы в другую. Т. е. в одном случае делаю вывод, что глюк вызывается в одном месте программы, в другом случае - в другом. Может быть кто-то сталкивался с такими чудесами? Посоветуйте что-нибудь пожалуйста. Заранее благодарю. -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
обычный фигня при неверной работе с памятью. Где то чего то перекрывает, портит. Может где то не инициализированно, что то. В общем простор для поиска
|
|||
|
||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
maint, По моему опыту, если проблемы с памятью, то прога от запуска к запуску может вести себя по разному.
В данном случае, если запустилась в первый раз, то запустится и во все остальные. Если в первый раз не запустится, то и в остальные тоже не запустится. Так что как-то сомневаюсь на счёт проблем с памятью. И потом, почему закидывание нескольких значений в буфер моментально решает эти самые проблемы? Это сообщение отредактировал(а) EKoshelev - 23.12.2014, 13:55 -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Ну, выходит, я приврал, что ошибка сразу в нескольких местах. Получилось вот что. В коде есть такая строка:
connect(m_rightButton, SIGNAL(pressed()), this, SLOT(rightButtonPressedSlot())); Если её закомментить, то всё работает. Если раскомментить - выше описанные симптомы. Даже если раскомментить приведённую строку и закомментить тело слота. При этом есть аналогичная строка с аналогичным слотом: connect(m_leftButton, SIGNAL(pressed()), this, SLOT(leftButtonPressedSlot())); которая никаких сбоев, похоже, не даёт. С ней работает. -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Строка эта была в процедуре, в которую передавалась кнопка m_rightButton.
После передачи на неё рисовалась картинка, а потом устанавливался connect. Переставил connect до рисования и вроде стало работать. В чём была причина так и не понял. -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Вызывать connect() лучше всего сразу после создания объектов, обычно в конструкторе.
Если кнопка не должна реагировать на нажатия, лучше сделать её не активной. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |