2012-05-06 2 views
6

Я строю свое окно C# проекта VS 2010 в режиме выпуска. Мой первый шанс удивляться тому, что он создает файлы pdb даже в режиме выпуска в режиме. Я не смог загрузить символы отладки после присоединения процесса для отладки.Почему компиляция проекта VS 2010 генерирует файлы pdb при создании в режиме Release и Debug?

Мой вопрос в том, что если у нас есть файлы pdb как в режиме отладки, так и в режиме освобождения, то почему существует необходимость в двух режимах компиляции.

+0

Быстрый вопрос. Какой проект? .NET, C++? – ervinbosenbacher

+0

Проверьте настройки проекта-> Строить-> Дополнительно-> Расширенные настройки сборки-> Отладочная информация. Я думаю, что если он установлен на pdb-only в режиме деблокирования, он будет генерировать файлы pdb. – ervinbosenbacher

ответ

6

Мой вопрос заключается в том, что если у нас есть PDB файлы в обоих отладки и выпуска режиме, то почему существует потребность в режиме две компиляции

Есть различия другой, чем генерация PDB между отладкой и выпуском. Если вы перейдете в свойства сборки и перейдете в «Дополнительно», будут созданы разные уровни отладочной информации - Полный, PDB-только и Нет.

Кроме того, существуют различные уровни оптимизации времени компиляции и наличие различных символов препроцессора (например, чтобы каждый Debug.Assert присутствовал или отсутствовал).

Конечно, у вас также могут быть свои собственные варианты конфигурации сборки с множеством опций.

+0

В чем разница между Full и PDB-only? –

+1

@Romil: http://msdn.microsoft.com/en-us/library/8cw0bt21(v=vs.80).aspx –

+2

и http://mariangemarcano.blogspot.com/2011/11/visual-studio- отладки, и-remote.html –

2

Существует множество причин, по которым существует режим отладки/освобождения, не связанный с созданием файлов PDB.

VS выполняет скомпилированные программы быстрее в режиме деблокирования. Кроме того, существуют директивы компилятора, которые могут изменить способ работы программы, если вы находитесь в режиме отладки или выпуска. Например, вы можете использовать директивы компилятора, чтобы отключить блоки верхнего уровня trycatch, чтобы вы могли изолировать исключение, которое бросается в определенную строку кода.

Это всего лишь несколько примеров. Короче говоря, режим отладки имеет гораздо больше целей, чем просто создание файлов PDB для вас.

1

У вас может быть более двух режимов компиляции. Обычно, отладка и релиз означают, хотите ли вы оптимизировать или нет. Несмотря на это, вы все равно можете генерировать отладочную информацию, только PDB для сборки релиза не будет иметь большой поддержки. Встраиваемые функции, переменные могут быть исключены, и т.д.

0

Недавно я сделал winupdate (20120508) и Visual Studio, казалось, очень медленно отладки после с 1 минутной задержкой после лаг компиляции к-runDebug, а затем, когда программа отладки вышла, очередная задержка 1 минуты до прибудете снова контролировать визуальную студию. Я очистил все, но радости.

Решение: Я вручную удалил * .sdf и * .suo файлы в своем проекте/решении и перестроил. Проблема ушла магически.

Не знаете, почему, но что-то не синхронизировалось, было повреждено или несовместимо с обновлением, и его необходимо было сдуть вручную.

Смежные вопросы