pdb - это файл базы данных программы, который создается при компиляции. Этот файл содержит информацию об отладке и состоянии проекта, которая позволяет инкрементно связывать конфигурацию отладки вашей программы.
2010 года
@pavanred Вы уверены, что компилятор C # также выполняет инкрементные ссылки? Я слышал об этом только в мире C ++. В проекте C ++ вы включаете / отключаете инкрементные ссылки в свойствах проекта. Есть ли возможность в проекте C # также?
RBT
Ответы:
236
Файл PDB содержит информацию для работы с отладчиком. В любом случае в сборке Release меньше информации, чем в сборке Debug. Но если вы хотите, чтобы он вообще не генерировался, перейдите в свойства Build вашего проекта, выберите конфигурацию Release, нажмите «Advanced ...» и в «Debug Info» выберите «None».
@Jon Помогает ли пользователю предоставить дополнительную информацию в случае сбоя приложения? (т. е. помогает ли это с окном JIT, а не «Эта программа должна завершиться, отправьте отчет об ошибках Windows»)
Джаред Харли,
19
Имейте в виду, что вы, вероятно, должны держать их включенными в ваши отладочные выпуски, так как это позволяет отслеживать исключения для конкретной строки в вашем коде. Без символов в файле pdb вам будет сложно точно определить конкретные проблемы для их решения. Вам также не обязательно исключать их из сборок релизов, так как иногда дополнительная информация в большом отчете может быть очень полезной.
Дарбио
4
@Jared: Да, он включает в себя трассировку стека исключения, которое будет точно указывать на конкретную функцию и строку кода.
Дарбио
1
@Jared: Что вы подразумеваете под "окном JIT"? Маловероятно, что он предоставит пользователю гораздо больше информации, но он может позволить вам присоединить отладчик к сборке релиза, если вам это нужно. Как правило, вы не включили бы его для приложений конечного пользователя. Конечно, только то, что он скопирован в папку Release, не означает, что вы должны отправить его в установщик ...
Jon Skeet
3
@ Ата: PDB, а не PDF. Пожалуйста, выделите эти два в своем уме - это совершенно разные форматы файлов, для разных целей. Включение PDB не представляет особой проблемы; это может немного облегчить работу хакера , но это вас беспокоит? В общем, .NET в большинстве случаев можно относительно легко декомпилировать - если вы беспокоитесь об этом, просто не поставлять PDB не является хорошим решением.
Джон Скит
130
Первоначально я задавал себе вопрос « Нужен ли файл PDB, развернутый на компьютере моего клиента? », И после прочтения этого поста решил исключить этот файл.
Все работало нормально, до сегодняшнего дня, когда я пытался выяснить, почему в окне сообщения, содержащем a, Exception.StackTraceотсутствовала информация о файле и номере строки - это необходимо для устранения неполадок исключения. Я перечитал этот пост и нашел ключевой фрагмент информации: что, хотя для запуска приложения не требуется PDB, необходимо, чтобы в строке присутствовали номера файлов и StackTraceстрок. Я включил файл PDB в исполняемую папку, и теперь все в порядке.
Это очень важная часть, о которой accepted answerне следует упоминать.
Монку
85
PDB является сокращением для P rogram D ату B азы. Как следует из названия, это хранилище (постоянное хранилище, такое как базы данных) для хранения информации, необходимой для запуска вашей программы в режиме отладки. Он содержит много важной релевантной информации, необходимой при отладке вашего кода (в Visual Studio), например, в каких точках вы вставили точки останова, когда вы ожидаете, что отладчик сломается в Visual Studio.
Это причина, почему много раз Visual Studio не удается достичь точек останова, если вы удаляете *.pdbфайлы из папок отладки. Отладчик Visual Studio также может сообщить вам точный номер строки файла кода, в котором произошло исключение в трассировке стека с помощью *.pdbфайлов. Таким образом, файлы pdb действительно полезны для разработчиков при отладке программы.
Как правило, не рекомендуется исключать генерацию *.pdbфайлов. С точки зрения выпуска продукта вам следует создать файлы pdb, но не отправлять их на сайт клиента в установщике продукта. Сохраните все сгенерированные файлы PDB на сервере символов, откуда он может использоваться / использоваться в будущем при необходимости. Специально для случаев, когда вы устраняете проблемы, такие как сбой процесса. Когда вы начнете анализировать файлы аварийного дампа и если ваши исходные *.pdbфайлы, созданные в процессе сборки, не будут сохранены, Visual Studio не сможет разобрать точную строку кода, которая вызывает сбой .
Если вы по-прежнему хотите полностью отключить создание *.pdbфайлов для любого выпуска, перейдите в свойства проекта -> Вкладка «Сборка» -> Нажмите на Advancedкнопку -> Выберите noneиз выпадающего списка «Отладочная информация» -> нажмите, OKкак показано на снимке ниже ,
Примечание . Этот параметр необходимо будет выполнить отдельно для конфигураций сборки «Debug» и «Release».
Ответы:
Файл PDB содержит информацию для работы с отладчиком. В любом случае в сборке Release меньше информации, чем в сборке Debug. Но если вы хотите, чтобы он вообще не генерировался, перейдите в свойства Build вашего проекта, выберите конфигурацию Release, нажмите «Advanced ...» и в «Debug Info» выберите «None».
источник
Первоначально я задавал себе вопрос « Нужен ли файл PDB, развернутый на компьютере моего клиента? », И после прочтения этого поста решил исключить этот файл.
Все работало нормально, до сегодняшнего дня, когда я пытался выяснить, почему в окне сообщения, содержащем a,
Exception.StackTrace
отсутствовала информация о файле и номере строки - это необходимо для устранения неполадок исключения. Я перечитал этот пост и нашел ключевой фрагмент информации: что, хотя для запуска приложения не требуется PDB, необходимо, чтобы в строке присутствовали номера файлов иStackTrace
строк. Я включил файл PDB в исполняемую папку, и теперь все в порядке.источник
accepted answer
не следует упоминать.PDB является сокращением для P rogram D ату B азы. Как следует из названия, это хранилище (постоянное хранилище, такое как базы данных) для хранения информации, необходимой для запуска вашей программы в режиме отладки. Он содержит много важной релевантной информации, необходимой при отладке вашего кода (в Visual Studio), например, в каких точках вы вставили точки останова, когда вы ожидаете, что отладчик сломается в Visual Studio.
Это причина, почему много раз Visual Studio не удается достичь точек останова, если вы удаляете
*.pdb
файлы из папок отладки. Отладчик Visual Studio также может сообщить вам точный номер строки файла кода, в котором произошло исключение в трассировке стека с помощью*.pdb
файлов. Таким образом, файлы pdb действительно полезны для разработчиков при отладке программы.Как правило, не рекомендуется исключать генерацию
*.pdb
файлов. С точки зрения выпуска продукта вам следует создать файлы pdb, но не отправлять их на сайт клиента в установщике продукта. Сохраните все сгенерированные файлы PDB на сервере символов, откуда он может использоваться / использоваться в будущем при необходимости. Специально для случаев, когда вы устраняете проблемы, такие как сбой процесса. Когда вы начнете анализировать файлы аварийного дампа и если ваши исходные*.pdb
файлы, созданные в процессе сборки, не будут сохранены, Visual Studio не сможет разобрать точную строку кода, которая вызывает сбой .Если вы по-прежнему хотите полностью отключить создание
*.pdb
файлов для любого выпуска, перейдите в свойства проекта -> Вкладка «Сборка» -> Нажмите на Advancedкнопку -> Выберитеnone
из выпадающего списка «Отладочная информация» -> нажмите, OKкак показано на снимке ниже ,Примечание . Этот параметр необходимо будет выполнить отдельно для конфигураций сборки «Debug» и «Release».
источник
PDB файл содержит информацию , используемую отладчиком. Не требуется запускать ваше приложение и его не нужно включать в выпущенную версию.
Вы можете отключить создание файлов pdb в Visual Studio. Если вы строите из командной строки или скрипта, то опустите
/Debug
переключатель.источник
Файл базы данных отладки программы (pdb) - это формат файла Microsoft для хранения отладочной информации.
Когда вы создаете проект с использованием Visual Studio или командной строки, компилятор создает эти файлы символов.
Проверьте документы Microsoft
источник