дебаг работает, релиз нет...
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
дебаг работает, релиз нет...
Может кто имел подобную ситуацию...
Дебаговая версия приложения работает нормально. Неважно запускаешь приложение из среды, либо отдельный екзешник - нет проблем.
Релизная версия отказывается работать как надо. Отключил всю оптимизацию в релизной версии - все равно не работает.
Попросил релизную версию сгенерить дебажную информацию - такая конфигурация работает только если запускать из среды через F5 (в чистом дебаге).
Если же запускапть отдельынй екзешник из директории или из среды - не работает.
Что конкретно не работает - не вызывается метод один (call back). Объяснять подробнее очень долго.
Меня интересует из за каких установок ведут себя две сборки
Дебаговая версия приложения работает нормально. Неважно запускаешь приложение из среды, либо отдельный екзешник - нет проблем.
Релизная версия отказывается работать как надо. Отключил всю оптимизацию в релизной версии - все равно не работает.
Попросил релизную версию сгенерить дебажную информацию - такая конфигурация работает только если запускать из среды через F5 (в чистом дебаге).
Если же запускапть отдельынй екзешник из директории или из среды - не работает.
Что конкретно не работает - не вызывается метод один (call back). Объяснять подробнее очень долго.
Меня интересует из за каких установок ведут себя две сборки
-
- Уже с Приветом
- Posts: 932
- Joined: 18 Mar 2000 10:01
- Location: Seattle
-
- Уже с Приветом
- Posts: 750
- Joined: 10 Dec 2003 20:11
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Re: дебаг работает, релиз нет...
shadow7256 wrote:Что конкретно не работает - не вызывается метод один (call back). Объяснять подробнее очень долго.
Меня интересует из за каких установок ведут себя две сборки
Среду и средство разработки вы не назвали, но исходя из "сборок" это вполне может быть .NET. Информации не много, попробуйте для начала
а) посмотреть pre & post build events для debug & release
б) Посмотреть одинаковый ли набор проектов в solution для компиляции в обоих режимах.
в) Нет ли ifdef (!)DEBUG (это видно в среде, если код активен или нет)
г) Одинаковый ли набор dll в target folders после билда
д) Внимательно просмотреть все warnings (если есть
Если бы это была, к примеру, Delphi, то я бы грешил на уничтоженный но не обнуленный объект.
-
- Удалён за грубость
- Posts: 5433
- Joined: 22 Jan 2003 21:38
- Location: San Diego, CA
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Среда - Visual Studio 6.0 (Visual C++).
их всех предупреждений которые вываливаются на компиляции:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
LINK : warning LNK4098: defaultlib "mfc42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "mfcs42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4049: locally defined symbol ""public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_s
tring@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ)" imported
LINK : warning LNK4049: locally defined symbol ""public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *,class st
d::allocator<char> const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z)" imported
LINK : warning LNK4049: locally defined symbol "__setmbcp" imported
их всех предупреждений которые вываливаются на компиляции:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
LINK : warning LNK4098: defaultlib "mfc42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "mfcs42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4049: locally defined symbol ""public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_s
tring@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ)" imported
LINK : warning LNK4049: locally defined symbol ""public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *,class st
d::allocator<char> const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z)" imported
LINK : warning LNK4049: locally defined symbol "__setmbcp" imported
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
90%, что memory corruption или доступ к неинициализированной переменной.
Сделайте release build с включенной debug info и без оптимизаций.
Как вы говорите, такой build не работает, только если его запускать из директории или среды. Не беда. Запускаете .exe и подключаетесь к нему дебаггером ( build -> start debug -> attach to process ). Разбираетесь, какой адрес corrupted. Потом перезапускаете, ставите breakpoint на запись в это место в памяти.
Сделайте release build с включенной debug info и без оптимизаций.
Как вы говорите, такой build не работает, только если его запускать из директории или среды. Не беда. Запускаете .exe и подключаетесь к нему дебаггером ( build -> start debug -> attach to process ). Разбираетесь, какой адрес corrupted. Потом перезапускаете, ставите breakpoint на запись в это место в памяти.
-
- Уже с Приветом
- Posts: 932
- Joined: 18 Mar 2000 10:01
- Location: Seattle
shadow7256 wrote:Среда - Visual Studio 6.0 (Visual C++).
LINK : warning LNK4098: defaultlib "mfc42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "mfcs42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
Это релиз билд такие сообщения выдает? Если да, то похоже, у вас runtime library неправильная линкуется. Например, у вас в project settings (C++) может быть выбрано runtime library: multithreaded debug вместо multithreaded. И еще, если несколько модулей линкуются вместе, то надо, чтобы они использовали одну и ту же runtime library.
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
-
- Уже с Приветом
- Posts: 7759
- Joined: 18 Sep 2001 09:01
- Location: RUS.76 -> KOR -> RUS.53 -> US.PA -> US.MD
Hamster wrote:90%, что memory corruption или доступ к неинициализированной переменной.
Сделайте release build с включенной debug info и без оптимизаций.
Как вы говорите, такой build не работает, только если его запускать из директории или среды. Не беда. Запускаете .exe и подключаетесь к нему дебаггером ( build -> start debug -> attach to process ). Разбираетесь, какой адрес corrupted. Потом перезапускаете, ставите breakpoint на запись в это место в памяти.
Second that. Я бы сразу скомпилял с BoundsChecker-ом Instrumental Build - все бы и вылезло (и еще возможно много бы нового узнали о своем коде )
N.E.R.V.O.U.S.: Networked Electronic Replicant Viable for Observation and Ultimate Sabotage.
-
- Уже с Приветом
- Posts: 1787
- Joined: 27 Nov 2002 05:24
- Location: Sevastopol --> Ft. Lauderdale-->Boston-->Chicago
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Проблема действительно была в том, что происходило обращение к переменной, состояние которой было не определено. Точнее оно было определено, но неправильно из за того, что при переносе некоторых функциональных частей из одного (корректно работающего) приложения в другое (проблемное) кое какие части были удалены за ненужностью но удалены не до конца. В результате остались какие то разорваные кусочки, которые вызывались почему то в релизе только, а в дебаге не вызывались.
Почистив все до конца вроде заработало, но закралось подозрение, что таких "опухолей" может быть еще несколько
Почистив все до конца вроде заработало, но закралось подозрение, что таких "опухолей" может быть еще несколько
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
-
- Уже с Приветом
- Posts: 750
- Joined: 10 Dec 2003 20:11
shadow7256 wrote:Проблема действительно была в том, что происходило обращение к переменной, состояние которой было не определено.
....
но закралось подозрение, что таких "опухолей" может быть еще несколько
gcc или g++ с ключами " -Wall -O2" прекрасно об этом предупреждают. И, кстати, они доступны в виндах тоже в составе пакета cygwin.
-
- Уже с Приветом
- Posts: 132
- Joined: 06 Nov 2003 08:36
- Location: UA -> IA
-
- Уже с Приветом
- Posts: 132
- Joined: 06 Nov 2003 08:36
- Location: UA -> IA