Что такое PDB-файл и как я могу исключить его из папки выпуска при восстановлении моего решения?Что такое PDB-файл?
ответ
Файл PDB содержит информацию для работы отладчика. В любом случае в сборке Release меньше информации, чем в сборке Debug. Но если вы хотите, чтобы он вообще не генерировался, перейдите в свойства сборки проекта, выберите конфигурацию выпуска, нажмите «Дополнительно ...» и в разделе «Информация об отладке» выберите «Нет».
@Jon Помогает ли пользователю предоставить дополнительную информацию пользователю при сбое приложения? (т. е. помогает ли это с окном JIT, а не «Эта программа должна заканчиваться, отправляйте отчет об ошибках Windows») –
Имейте в виду, что вы, вероятно, должны включать их в свои отладочные версии, поскольку это позволяет отслеживать исключения к определенной строке в вашем коде. Без символов в файле pdb вам будет трудно определить конкретные проблемы, чтобы их решить. Вам необязательно также исключать их из сборников релизов, поскольку иногда дополнительная информация в большом отчете может быть очень полезной. – Darbio
@ Jared: Да, он включает в себя трассировку стека исключения, которая будет определять конкретную функцию и строку кода. – Darbio
A PDB file содержит информацию, используемую отладчиком. Это не обязательно для запуска вашего приложения, и его не нужно включать в выпущенную версию.
Вы можете отключить файлы pdb от создания в Visual Studio. Если вы строите из командной строки или скрипта, опустите переключатель /Debug
.
Режим деблокирования по-прежнему строит PDB по умолчанию, я полагаю. Вы можете изменить свойства проекта, чтобы отключить его. –
Yup; он по-прежнему поставляется с выпуском проекта по умолчанию. –
Я только что проверил, и я также получаю один по умолчанию при использовании Visual Studio. –
Я сам задал себе вопрос «Мне нужен файл PDB, развернутый на машине моего клиента?», и после прочтения этого сообщения решил исключить файл.
Все работало нормально, до сегодняшнего дня, когда я пытался выяснить, почему в поле сообщения, содержащем Exception.StackTrace
, отсутствовала информация о файле и номере строки - необходимые для устранения неполадок исключения. Я перечитал это сообщение и нашел ключевой самородок информации: что, хотя PDB не требуется для запуска приложения, необходимо, чтобы номера файлов и строк присутствовали в строке StackTrace
. Я включил файл PDB в исполняемую папку, и теперь все в порядке.
PDB является сокращением для P rogram Д ата Б аза. Как следует из названия, это хранилище (постоянное хранилище, такое как базы данных), чтобы поддерживать информацию, необходимую для запуска вашей программы в режиме отладки. Он содержит много важной релевантной информации, требуемой при отладке кода (в Visual Studio), например. в каких точках вы вставили точки останова, где вы ожидаете, что отладчик сломается в Visual Studio.
Это причина, по которой много раз Visual Studio не ударяла точки разрыва, если вы удаляете * .pdb-файлы из папок отладки. Отладчик Visual Studio также может рассказать вам точный номер строки файла кода, при котором в трассировке стека произошла ошибка, с помощью файлов * .pdb. Таким образом, эффективные файлы pdb действительно являются благом для разработчиков при отладке программы.
Вообще не рекомендуется исключать генерацию файлов * .pdb. С максимальной точки зрения вы можете создавать файлы pdb, но не отправлять их на сайт клиента в программе установки продукта. Сохраните все сгенерированные файлы pdb на сервере символов, откуда они могут быть использованы/указаны в будущем, если это необходимо. Специально для случаев, когда вы отлаживаете такие проблемы, как сбой процесса. Когда вы начинаете анализировать файлы дампа сбоя и если ваши исходные файлы * .pdb, созданные во время процесса сборки, не сохраняются, Visual Studio не сможет определить точную строку кода, которая вызывает сбой.
Если вы действительно хотите отключить генерацию файлов * .pdb вообще для любой версии, перейдите к свойствам проекта -> вкладка «Создание» -> нажмите кнопку «Дополнительно» -> «Нет» для поля «Debug Info» -> нажмите ОК, как показано в снимок ниже.
Примечание: Этот параметр должен быть сделано отдельно для «Debug» и «Release» строить конфигурации.
- 1. Что такое "?" делать? Что такое __FILE__?
- 2. Что такое трансформация и что такое Transform?
- 3. Что такое структура разработки? Что такое IDE?
- 4. Что такое PHPCI - что такое сборка?
- 5. Что такое скрипка и что такое DL?
- 6. Что такое Dim, что такое Факт?
- 7. Что такое поток? Что такое `initialize`?
- 8. Что такое сжатие, что
- 9. Что такое "??"
- 10. Что такое.
- 11. Что такое большие графики? Что такое анализ больших графов? Что такое большие данные? Что такое большой анализ данных?
- 12. Что такое «Нарисовать что-то»?
- 13. Что такое мыло в пурпуре? что это такое? Что такое использование мыла/xml-RPC-пользователя?
- 14. Что такое последовательная запись и что такое случайная запись
- 15. Что такое синтаксис и что такое использование @ в javascript?
- 16. Google AMP: что такое макет? Что такое контейнер?
- 17. Что такое метод обновления MessageDigest и что такое BASE64Encoder?
- 18. Что такое весенние бобы, что такое использование бобов
- 19. Что такое пулы PHP-FPM и что такое pm.max_children?
- 20. Терминология: что такое маска и что такое флаг
- 21. Что такое угловой 2 Непрозрачный токен и что такое точка?
- 22. Что такое бизнес-объекты и что такое бизнес-логика?
- 23. Что такое temp и что такое использование temp в java?
- 24. Что такое autovalue.shaded или что такое затененная банка?
- 25. Что такое заголовок? В частности, что такое POST @ GET заголовки?
- 26. Что такое структура? И что такое Учение 2?
- 27. Что такое un/managed DLL? Что такое un/управляемый код?
- 28. Что такое preemption/Что такое preemtible ядро? Для чего это?
- 29. Что такое CGI и что такое CGI-скрипты?
- 30. Что такое .NET-архитектура и что такое .NET framework?
pdb является файлом базы данных программы и создается при компиляции. Этот файл содержит отладочную информацию и информацию о состоянии проекта, которая позволяет инкрементно связывать конфигурацию отладки вашей программы. – pavanred
@pavanred вы уверены, что компилятор C# также выполняет инкрементную привязку? Я слышал об этом только в мире C++. В проекте C++ вы включаете/запрещаете инкрементную привязку к свойствам проекта. Есть ли опция в проекте C#? – RBT