Вы не можете этого сделать, потому что нет программы переустановки для переустановки среды выполнения отладки (и фактически лицензия на программное обеспечение запрещает ее распространение, поэтому вы нарушите лицензионное соглашение, даже если вы что-то собрали). Однако «отладочная сборка» обычно включает 4 отдельных параметра, а остальные 3 не влияют на распространение приложения.
Создание файла .pdb (cl / Zi и link / DEBUG), который позволяет выполнять символьную отладку. Вы, вероятно, хотите добавить / OPT: ref к параметрам компоновщика; компоновщик удаляет функции, на которые нет ссылок, когда не создает файл .pdb, но в режиме / DEBUG он сохраняет их все (так как символы отладки ссылаются на них), если вы не добавите это точно.
Обычно я делаю это со всеми своими сборками, даже с производственными. Пока вы снова включаете оптимизацию компоновщика с помощью / OPT: ref, это на самом деле ничего не стоит, и наличие символов может пригодиться, если вы захотите прочитать аварийный дамп.
Использование отладочной версии библиотеки времени выполнения C (возможно, MSVCR * D.dll, но это зависит от используемой среды выполнения). Это сводится к / MT или / MTd (или что-то еще, если не использовать среду выполнения DLL).
Это то, что означает, что вы больше не можете перераспределять вещи. Это также оказывает огромное влияние на производительность некоторых функций libraty, в частности, на распределение памяти. Отладочные версии времени выполнения стараются «отравить» память, к которой они обращаются, значениями, чтобы очистить неинициализированные ошибки данных, а выпуски, как правило, оставляют старые данные круглыми, чтобы сэкономить время, касающееся их. Я полагаю, что в реализациях MSVCP * STL версии отладки также пропускают все пулы выделения, которые обычно выполняются, так что средство проверки утечек может показать именно тот блок, который вы думаете, а не какой-то больший кусок памяти, который он перераспределяет, но это означает, что он делает больше вызовов malloc поверх них намного медленнее. Если у вас есть ошибки, связанные с указателем или итератором, это может повлиять на то, какое неправильное поведение вы получите.
Отключение оптимизации компилятора (/Od).
Этот делает много вещей ( этот вопрос имеет некоторое хорошее обсуждение предмета), но в основном это ухудшает производительность. Много. К сожалению, это необходимо, если вы хотите, чтобы пошаговый режим работал плавно.
установка препроцессора #defines DEBUG или NDEBUG.
Это влияет на множество библиотек различными способами, но наиболее примечательно, что он компилируется или удаляет assert () и друзей.
Так что вы можете рассмотреть возможность построения с некоторой меньшей комбинацией этих вариантов. Я часто использую сборки, которые используют символы (/ Zi и link / DEBUG) и утверждения (/ DDEBUG), но все еще оптимизированы (/ O1 или / O2 или любые другие флаги, которые вы используете), но с указателями кадров стека, сохраненными для очистить трассировки (/ Oy-) и использовать обычную библиотеку времени выполнения (/ MT). Это работает близко к моей сборке релиза и является полуотладимым (обратные трассировки в порядке, пошаговое выполнение немного странно на уровне исходного кода; уровень сборки, конечно, работает нормально). Вы можете иметь сколько угодно конфигураций; просто клонируйте свой первый релиз и включите те части отладки, которые кажутся полезными.
Единственное, что должно повлиять на попытку распространения приложения, - это 2.
Если вы пытаетесь отлаживать на другом компьютере, вас также может заинтересовать msvsmon .