![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Paint_in_black |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 24.12.2007 Репутация: нет Всего: нет |
В большом проекте под Visual Studio собираю релиз. При прохождении процедур загрузки программы на некоторых компах всё отлично, на других падает. Если запускать релиз из-под студии то всегда программа работает отлично, а просто из дирректории падает, все нужные dll вроде на месте.
Экспериментально замечено, что если добавлять или убирать какие-либо функции, т.е. менять код, релиз может вдруг заработать или начать неожиданно падать. Опять же замечено, путем создания файла, куда прописываются успешно завершённые этапы загрузки, что падение происходит в разных местах программы. Может кто-нибудь с подобным сталкивался? Что предпринимать? |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Однозначно - где-то в коде ошибка. В дополнение к приведенной статье могу посоветовать использовать для поиска ошибки OutputDebugString + DebugView (утилита Марка Руссиновича, www.sysinternals.com, сейчас это вроде под мелкософт ушло). Несмотря на имена, эта связа используется для отладки именно релиз-версии. Исходя из своего опыта могу предположить, что это неинициализированная переменная - эта гадость именно так чаще всего и проявляется (в среде и в дебаге работает, вне среды - как получится).
-------------------- ... |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
А еще смотря от версии VS .
Если 8я версия, обязательно выдаст: warning C4101: 'var' : unreferenced local variable -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: 1 Всего: 3 |
Andrey44, Не обязательно !
у меня было такое что не инициализирована переменная (точнее указатель в никуда), ВС 2005 ничего не говорил, в дебаге работало, в релизе падало ! Добавлено @ 15:48 zkv, Спасибо за ссылку ! Это сообщение отредактировал(а) DigitSphinx - 24.12.2007, 15:48 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
это "неиспользуемая" переменная, а вовсе не неинициализированная. Конечно, в простых случаях компилятор предупреждает и о неинициализированных переменных (что-то вроде warning "переменная используется до инициализации"). Но это вряд ли автоматическая переменная (т.к. падает в разных местах), а, скорее, неинициализированный член класса (а об этом компилятор не предупреждает), а во-вторых, это может быть некорректно написанный класс. Например, я как-то нарвалась с элементарным MFC-шным CSize: была абсолютно уверена, что конструктор по-умолчанию инициализирует его нулями. Щас! -------------------- ... |
|||
|
||||
| Paint_in_black |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 24.12.2007 Репутация: нет Всего: нет |
Смущает больше всего то, что где-то программа запускается, где-то нет. Пробовал влиять на ход загрузки (где происходит падение - это можно сделать редактируя ini-файл) в результате программа может упасть на том же месте, при этом уже успешно его миновав пару-тройку раз (в ходе загрузки функция вызывается неоднократно для разных классов)...
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Да, извиняюсь не то написал.
Выдает другое warning C4700: uninitialized local variable 'var' used -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Если падает при запуске, то круг подозреваемых сужается... -------------------- ... |
|||
|
||||
| Lotrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 9.2.2006 Где: Казань Репутация: 2 Всего: 3 |
Не знаю, имеет ли смысл мой совет в твоем случае. Если это возможно, попытайся написать тест для каждого из классов в отдельности (ежели они у тебя не сильно связаны), и для каждого из тестов прогнать release-версию... Занятие муторное, но ходить по дизассембленной программе в отладчике - занятие, имхо, не лучше.
|
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Paint_in_black, до выполнения main дело доходит?
Andrey44, прям всегда? Или на всех hello-world'ах? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Paint_in_black |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 24.12.2007 Репутация: нет Всего: нет |
Уважаемые коллеги! Всем спасибо за советы, с проблемой справился. Профайлер показал неинициализированную переменную, которая сходу использовалась в цикле как верхний предел, теперь вроде работает
Добавлено через 1 минуту и 32 секунды |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
archimed7592,
Если, честно, то не понял вопроса -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Есть туева хуча случаев, когда студия будет молчать как партизан. Студия рапортует только о примитивных случаях уровня "hello world". -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Понятно. Спасибо за информацию. Теперь буду знать. Хотя при объявлении локальной переменной и не присвоив ей никакого значения студия предупреждает. А вот если я не проинициализирую в конструкторе класса какую-нибудь переменную член класса, компилятор спокойно все это скушает и будет молчать. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |