2010-10-10 6 views
164

Что такое PDB-файл и как я могу исключить его из папки выпуска при восстановлении моего решения?Что такое PDB-файл?

+12

pdb является файлом базы данных программы и создается при компиляции. Этот файл содержит отладочную информацию и информацию о состоянии проекта, которая позволяет инкрементно связывать конфигурацию отладки вашей программы. – pavanred

+0

@pavanred вы уверены, что компилятор C# также выполняет инкрементную привязку? Я слышал об этом только в мире C++. В проекте C++ вы включаете/запрещаете инкрементную привязку к свойствам проекта. Есть ли опция в проекте C#? – RBT

ответ

165

Файл PDB содержит информацию для работы отладчика. В любом случае в сборке Release меньше информации, чем в сборке Debug. Но если вы хотите, чтобы он вообще не генерировался, перейдите в свойства сборки проекта, выберите конфигурацию выпуска, нажмите «Дополнительно ...» и в разделе «Информация об отладке» выберите «Нет».

+1

@Jon Помогает ли пользователю предоставить дополнительную информацию пользователю при сбое приложения? (т. е. помогает ли это с окном JIT, а не «Эта программа должна заканчиваться, отправляйте отчет об ошибках Windows») –

+11

Имейте в виду, что вы, вероятно, должны включать их в свои отладочные версии, поскольку это позволяет отслеживать исключения к определенной строке в вашем коде. Без символов в файле pdb вам будет трудно определить конкретные проблемы, чтобы их решить. Вам необязательно также исключать их из сборников релизов, поскольку иногда дополнительная информация в большом отчете может быть очень полезной. – Darbio

+4

@ Jared: Да, он включает в себя трассировку стека исключения, которая будет определять конкретную функцию и строку кода. – Darbio

10

A PDB file содержит информацию, используемую отладчиком. Это не обязательно для запуска вашего приложения, и его не нужно включать в выпущенную версию.

Вы можете отключить файлы pdb от создания в Visual Studio. Если вы строите из командной строки или скрипта, опустите переключатель /Debug.

+0

Режим деблокирования по-прежнему строит PDB по умолчанию, я полагаю. Вы можете изменить свойства проекта, чтобы отключить его. –

+0

Yup; он по-прежнему поставляется с выпуском проекта по умолчанию. –

+0

Я только что проверил, и я также получаю один по умолчанию при использовании Visual Studio. –

81

Я сам задал себе вопрос «Мне нужен файл PDB, развернутый на машине моего клиента?», и после прочтения этого сообщения решил исключить файл.

Все работало нормально, до сегодняшнего дня, когда я пытался выяснить, почему в поле сообщения, содержащем Exception.StackTrace, отсутствовала информация о файле и номере строки - необходимые для устранения неполадок исключения. Я перечитал это сообщение и нашел ключевой самородок информации: что, хотя PDB не требуется для запуска приложения, необходимо, чтобы номера файлов и строк присутствовали в строке StackTrace. Я включил файл PDB в исполняемую папку, и теперь все в порядке.

45

PDB является сокращением для P rogram Д ата Б аза. Как следует из названия, это хранилище (постоянное хранилище, такое как базы данных), чтобы поддерживать информацию, необходимую для запуска вашей программы в режиме отладки. Он содержит много важной релевантной информации, требуемой при отладке кода (в Visual Studio), например. в каких точках вы вставили точки останова, где вы ожидаете, что отладчик сломается в Visual Studio.

Это причина, по которой много раз Visual Studio не ударяла точки разрыва, если вы удаляете * .pdb-файлы из папок отладки. Отладчик Visual Studio также может рассказать вам точный номер строки файла кода, при котором в трассировке стека произошла ошибка, с помощью файлов * .pdb. Таким образом, эффективные файлы pdb действительно являются благом для разработчиков при отладке программы.

Вообще не рекомендуется исключать генерацию файлов * .pdb. С максимальной точки зрения вы можете создавать файлы pdb, но не отправлять их на сайт клиента в программе установки продукта. Сохраните все сгенерированные файлы pdb на сервере символов, откуда они могут быть использованы/указаны в будущем, если это необходимо. Специально для случаев, когда вы отлаживаете такие проблемы, как сбой процесса. Когда вы начинаете анализировать файлы дампа сбоя и если ваши исходные файлы * .pdb, созданные во время процесса сборки, не сохраняются, Visual Studio не сможет определить точную строку кода, которая вызывает сбой.

Если вы действительно хотите отключить генерацию файлов * .pdb вообще для любой версии, перейдите к свойствам проекта -> вкладка «Создание» -> нажмите кнопку «Дополнительно» -> «Нет» для поля «Debug Info» -> нажмите ОК, как показано в снимок ниже.

None Debug Info setting for a C# Project

Примечание: Этот параметр должен быть сделано отдельно для «Debug» и «Release» строить конфигурации.

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