Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / В чем разница между режимами debug и release? / 25 сообщений из 36, страница 1 из 2
19.12.2017, 15:36
    #39572092
Abejon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Ситуация такая: есть довольно древний проект на VS 2008, и мне приходится его поддерживать. Столкнулся с такой проблемой:
если собираю в студии в режиме debug , то всё собирается нормально, если же собираю в режиме release , то компилятор не находит один из заголовочных файлов, стабильно один и тот же файл.

В чём принципиальная разница между этими режимами? В чём может быть дело?
...
Рейтинг: 0 / 0
19.12.2017, 16:39
    #39572156
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Именно в плане препроцессора - определённый макрос NDEBUG. Почему бы тебе самому не
посмотреть на обвеску в месте, где включается ненаходящийся заголовок?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.12.2017, 17:52
    #39572208
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
AbejonСитуация такая: есть довольно древний проект на VS 2008, и мне приходится его поддерживать. Столкнулся с такой проблемой:
если собираю в студии в режиме debug , то всё собирается нормально, если же собираю в режиме release , то компилятор не находит один из заголовочных файлов, стабильно один и тот же файл.

В чём принципиальная разница между этими режимами? В чём может быть дело?

Принципиально Debug-сборка предназначена для отладки приложения, Debug -сборка -- это не приложение, а некий стенд, на котором ты можешь отлаживать алгоритмы и вылавливать ошибки.
Release-сборка предназначена для работы приложения.
(я предлагаю тебе внимательно прочитать каждое слово и вдуматься)


Если ты не можешь собрать приложение в Relese, это, по сути, ты не можешь его собрать ВООБЩЕ.
Далее, если ты обнародуешь детали, возможно, тебе помогут.

P.S. Да, забыл добавить, эта штука есть ТОЛЬКО у Microsoft VC.
...
Рейтинг: 0 / 0
19.12.2017, 19:19
    #39572248
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
MasterZivP.S. Да, забыл добавить, эта штука есть ТОЛЬКО у Microsoft VC.Да нет, эта штука есть везде.
...
Рейтинг: 0 / 0
20.12.2017, 05:17
    #39572416
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Abejon,

Если в одной конфигурации собирается, а во второй нет: заходим в настройки, и смотрим, чем одна конфигурация отличается от другой. В данном случае, в закдадке C++, Общие, Дополнительные каталоги включаемых файлов, там надо добавить хедер
...
Рейтинг: 0 / 0
20.12.2017, 06:25
    #39572423
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Dimitry Sibiryakov,
Вот файл, куда подключается тот, который не может открыть компилятор:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
//
//  stdafx.h
//  Client
//  Common module
//

#pragma once
#ifndef _HAS_TR1
#define _HAS_TR1 1
#endif

#include <memory>
using namespace std::tr1;

#if !defined(AFX_STDAFX_H__1CCC2E75_F59B_4A7B_8F1E_8E89DF186C6B__INCLUDED_)
#define AFX_STDAFX_H__1CCC2E75_F59B_4A7B_8F1E_8E89DF186C6B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// ATL secured functions.
#define _SECURE_ATL 1

// STL errors handling.
// _SECURE_SCL=1 for enabled state, 0 for disabled.
// _SECURE_SCL_THROWS=1 for throwing exception, 0 for abnormal program termination.
#ifdef _SECURE_SCL
#undef _SECURE_SCL
#endif
#ifdef _SECURE_SCL_THROWS
#undef _SECURE_SCL_THROWS
#endif
#define _SECURE_SCL 1
#define _SECURE_SCL_THROWS 1

// Insert your headers here
#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
#define _NORMAL_		(0x00)
#define _OFFLINE_		(0x01)
#define _STANDBY_		(0x02)
#define _DISABLE_		(0x04)
#define _DISABLE_NEW_	(0x08)
#define _MESSAGES_UNREAD_	(0x10)

#ifndef release_try
#ifdef DEBUG
#define release_try {
#define release_end_try }
#define release_catch_all } if(0) {
#define release_catch_end }
#define release_catch_tolog(...) }
#define release_catch_expr_and_tolog(...) }
#define delete_catch(x) delete x; //use debug and/or brain!
#else
#define release_try try {
#define release_end_try } catch(...) {}
#define release_catch_all } catch(...) {
#define release_catch_end }
#define release_catch_tolog(...) } catch(...) { appendToErrorFile(__VA_ARGS__); }
#define release_catch_expr_and_tolog(x, ...) } catch(...) { x; appendToErrorFile(__VA_ARGS__); }
#define delete_catch(x) try{ delete x; } catch(...) {} //ha-ha-ha! we need to avoid stupid crashes.
#endif
#endif

#define _WTL_NO_CSTRING
#include <atlstr.h>
#include <windows.h>
#include <wininet.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <iads.h>
#include <Adshlp.h>
#include <sstream>

#pragma warning(push)
#pragma warning(disable:4100)
#include <ptl.h>
#include <abstract.h>
#pragma warning(pop)

#include <wtlincl.h>
#include <errors.h>
#include <process.h>

#include <atlbase.h>
#include <atlapp.h>

#include <atlhost.h>
#include <atlwin.h>
#include <atlctl.h>

#include <atlframe.h>
#include <atlctrls.h>
#include <atldlgs.h>


#include <atlmisc.h>

#include <atlutil.h>

using namespace PTL;
// debug info
#include "IPCTraceMacros.h"

#include "sqlite3.h"

#include "Constants.h"

#include "mvc.h"

#include "PostFunctions.h"

extern volatile LONG g_bDebugMode;

#define BEGINTHREADEX(lpsa, cbStack, lpStartAddr, lpvThreadParm, fdwCreate, lpIDThread)((HANDLE)_beginthreadex((void *) (lpsa),(unsigned) (cbStack),(unsigned int (__stdcall *)(void *)) (lpStartAddr),(void *) (lpvThreadParm),(unsigned) (fdwCreate),(unsigned *) (lpIDThread)))

extern inline DWORD WaitForSingleObjectWithMsgLoop(__in HANDLE hHandle, __in DWORD dwMilliseconds);

#endif // !defined(AFX_STDAFX_H__1CCC2E75_F59B_4A7B_8F1E_8E89DF186C6B__INCLUDED_)


Режим DEBUG упоминается только в определении макросов, предназначенных для обработки исключений, насколько я понимаю.
А не открывается файл <ptl.h> , подключаемый вот в этом фрагменте:
Код: plaintext
1.
2.
3.
4.
5.
#pragma warning(push)
#pragma warning(disable:4100)
#include <ptl.h>
#include <abstract.h>
#pragma warning(pop)


Вот, собственно, его содержимое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#pragma once

#include <windows.h>
#include "..\common\wtlincl.h"
#include "..\common\errors.h"
#include "..\common\abstract.h"
#include "penum.h"
#include "penumstub.h"
#include "pbase.h"
#include "plocale.h"
#include "pplugin.h"
#include "ptempl.h"
#include "pmenu.h"
#include "pfind.h"

#define GetItemByID GetItemByName


Конфигурацию смотрел, сравнивал. Отличаются они в разделе C++ в следующем:
- в разделе Optimization: в режиме release включена оптимизация, в режиме debug - нет;
- в разделе Preprocessor: в режиме release определен _DEBUG, в режиме debug - NDEBUG.

Других различий в этом разделе я не увидел.
...
Рейтинг: 0 / 0
20.12.2017, 06:37
    #39572424
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapetВот файл, куда подключается тот, который не может открыть компилятор:
Код: plaintext
1.
//  stdafx.h

А теперь читайте о stdafx.h .
Потом решайте - нужны ли вам вообще предварительно откомпилированные заголовки и, если нужны, как правильно с ними работать.
...
Рейтинг: 0 / 0
20.12.2017, 07:13
    #39572436
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Basil A. Sidorov,
спасибо, почитаю. Но на вопрос-то ответа нет по-прежнему. Прекомпиляиця заголовков включена в обоих режимах: и debug , и в release , а работают они по-разному.
...
Рейтинг: 0 / 0
20.12.2017, 08:21
    #39572452
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapetПрекомпиляиця заголовков включена в обоих режимах: и debug , и в release , а работают они по-разному... только смена режима требует перекомпиляции предварительно скомпилированных заголовков.
Если ещё окажется, что "в вашем конкретном" случае pch не особо экономят время - надо просто отказаться от их использования.
...
Рейтинг: 0 / 0
20.12.2017, 09:39
    #39572471
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Basil A. Sidorov, так ведь перекомпиляция происходит при каждой смене режима. Но я перехожу из release в debug и всё компилируется нормально, я перехожу из debug в release и всё ломается.

Наверное, в моём случае и стоит отказаться от прекомпиляции заголовков - проект не такой уж и большой. Но это нужно будет исправить много файлов, а я не уверен, что после того, как я всё это сделаю, у меня всё заработает - причины-то этой ошибки я не понимаю. Значит, столкнусь с ней ещё раз, и придётся всё с начала начинать.

Т.ч. это я оставлю на самый крайний случай. Всё-таки, хочется понять, в чём дело.
...
Рейтинг: 0 / 0
20.12.2017, 13:25
    #39572695
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapet, а текст ошибки мы увидим всё же? а то что-то с этой погодой хрустальный шар сбоит постоянно)
...
Рейтинг: 0 / 0
20.12.2017, 13:32
    #39572699
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
White OwlMasterZivP.S. Да, забыл добавить, эта штука есть ТОЛЬКО у Microsoft VC.Да нет, эта штука есть везде.

Да нет в линухе отладочной версии библиотеки С... (и с++)

Там можно отдельно включать или выключать какие-то флажки проверок.

Просто работа в приложении, собранном MSVC в режиме отладки вообще невозможна.
В линуксе всё не так сегрегировано.
...
Рейтинг: 0 / 0
20.12.2017, 13:36
    #39572703
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapetНаверное, в моём случае и стоит отказаться от прекомпиляции заголовков - проект не такой уж и большой. Но это нужно будет исправить много файлов,

Нет, не нужно. Достаточно просто отклоючить использование precompiled header.
Можно это кстати сделать только для одного этого исходного файла, где заголовок не включается.


Оу, ошибка -то какая выдается?
...
Рейтинг: 0 / 0
20.12.2017, 13:40
    #39572710
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
Basil A. SidorovmaxapetВот файл, куда подключается тот, который не может открыть компилятор:
Код: plaintext
1.
//  stdafx.h

А теперь читайте о stdafx.h .
Потом решайте - нужны ли вам вообще предварительно откомпилированные заголовки и, если нужны, как правильно с ними работать.

Василий, а там же первый файл -- это ЗАГОЛОВОК, там stdafx.h вполне правильно закомментирован.
Он там не нужен. Так что дело видимо и не в нём....

Сейчас хрустальный шар подвезут, будет яснее...
...
Рейтинг: 0 / 0
20.12.2017, 14:30
    #39572753
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
MasterZiv, Виноват. FATAL ERROR 1083: Can not open file 'ptl.h' Such file or directory not found
...
Рейтинг: 0 / 0
20.12.2017, 14:52
    #39572773
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
MasterZiv, если быть совсем точным, то ошибка вот такая:

d:\mysolution\myproject\stdafx.h(81) : fatal error C1083: Cannot open include file: 'ptl.h': No such file or directory
...
Рейтинг: 0 / 0
20.12.2017, 15:11
    #39572790
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapetd:\mysolution\myproject\stdafx.h(81) : fatal error C1083: Cannot open include file: 'ptl.h': No such file or directoryдумается, что путь к ptl.h в конфигурации debug прописан в Additional Include Directories, а для релиза - нет. Надо его прописать и будет щастье))
...
Рейтинг: 0 / 0
20.12.2017, 15:27
    #39572819
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
egorych, это было бы слишком просто, но... путь прописан в обоих случаях верно. Порядок тоже совпадает.
...
Рейтинг: 0 / 0
20.12.2017, 16:02
    #39572872
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapet, а если руками путь в stdafx.h к проблемному файлу прописать, то чего получится?
ещё, кстати, вот такое вот пришло в голову: найди 7 отличий между
Код: plaintext
ptl и pt1
...
Рейтинг: 0 / 0
20.12.2017, 18:40
    #39572995
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
MasterZivWhite Owlпропущено...
Да нет, эта штука есть везде.

Да нет в линухе отладочной версии библиотеки С... (и с++)А при чем здесь отладочные версии библиотеки? Они конечно часто бывают двух видов, специально ради отладки, но вовсе не обязательны.
Ты же отлаживать свою программу собираешься а не библиотеку?

MasterZivТам можно отдельно включать или выключать какие-то флажки проверок.Так же и в MSVC это всего-лишь разные наборы флажков для сборки. Просто большие IDE уже из коробки знают что приложение может быть собрано в двух режимах и предлагает эти два набора флажков (которые еще и менять можно в продвинутых IDE).

И даже если не пользоваться IDE вообще, то никто не мешает иметь дефайн проверяемый твоей любимой сценарной системой и включающий тот или иной набор флажков, путей и библиотек.
...
Рейтинг: 0 / 0
20.12.2017, 21:51
    #39573097
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
MasterZivВасилий, а там же первый файл -- это ЗАГОЛОВОК, там stdafx.h вполне правильно закомментирован.Лично я изначально предположил, что проблема - в pch.
Поэтому просто акцентировал на первом попавшемся вхождении.
...
Рейтинг: 0 / 0
20.12.2017, 23:42
    #39573171
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapetegorych, это было бы слишком просто, но... путь прописан в обоих случаях верно. Порядок тоже совпадает.

Да не гони...
...
Рейтинг: 0 / 0
20.12.2017, 23:47
    #39573173
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
maxapetegorych, это было бы слишком просто, но... путь прописан в обоих случаях верно. Порядок тоже совпадает.

Да блин.
Ну выложи проект куда-то, либо дай вход удалённый на свой комп... RDP или TeamViewer
...
Рейтинг: 0 / 0
21.12.2017, 01:18
    #39573190
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
ptl.h это вообще какая-то левая библиотека. Куда и как она у тебя установлена - ищи сам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.12.2017, 05:18
    #39573202
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем разница между режимами debug и release?
У меня нормальные варианты кончились, теперь ненормальные:
- проверить #ifdef-ы c _DEBUG
- заменить <ptl.h> на "ptl.h"
- открыть файл проекта как текстовый и ещё раз посмотреть на разницу профилей сборок
- почистить всё и пересобрать с нуля
- включить детальный лог компилятора и посмотреть там, это тоже в настройках проекта делается, 20270675
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / В чем разница между режимами debug и release? / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]