Visual studio убрать pdb
Файлы базы данных программ (PDB) также называются файлами символов и используются для сопоставления идентификаторов и инструкций в исходном коде вашего проекта с соответствующими идентификаторами и инструкциями в скомпилированных приложениях. С помощью этих файлов отладчик связывается с исходным кодом, что позволяет выполнять его отладку.
При создании проекта из интегрированной среды разработки Visual Studio со стандартной конфигурацией отладочной сборки компилятор создает необходимые файлы символов. В этой статье описывается, как управлять файлами символов в интегрированной среде разработки, а именно:
Подробные сведения о файлах символов см. в следующих статьях:
Принципы использования файлов символов
PDB-файл содержит отладочные данные и сведения о состоянии проекта, позволяющие выполнять инкрементную компоновку отладочной конфигурации приложения. Отладчик Visual Studio использует PDB-файлы для определения двух ключевых элементов информации во время отладки:
- Имя исходного файла и номер строки, которая отображается в интегрированной среде разработки Visual Studio.
- Расположение точки останова в приложении.
В файлах символов также указываются расположение исходных файлов и при необходимости сервер, с которого они будут извлекаться.
Отладчик загружает только те PDB-файлы, которые точно соответствуют PDB-файлам, созданным при построении приложения (то есть исходные PDB-файлы или их копии). Точное дублирование является обязательным, поскольку компоновка приложения может быть изменена даже в том случае, если сам код не изменялся. Дополнительные сведения см. в статье Почему Visual Studio требует, чтобы файлы символов отладчика точно соответствовали двоичным файлам, с которыми они были собраны?
Если требуется выполнить отладку кода за пределами исходного кода проекта, например кода Windows или стороннего кода, вызываемого проектом, необходимо указать расположение PDВ-файлов (и, если необходимо, исходных файлов) для внешнего кода, причем эти файлы должны точно соответствовать сборкам вашего приложения.
Места, в которых отладчик ищет символы
При отладке проекта в интегрированной среде разработки Visual Studio отладчик автоматически загружает файлы символов, которые он может найти по умолчанию.
При отладке управляемого кода на удаленном устройстве все необходимые файлы символов должны находиться либо на локальном компьютере, либо в расположении, указанном в параметрах отладчика.
Отладчик ищет файлы символов в следующих местах:
Расположение, указанное в библиотеке DLL или в исполняемом файле (EXE).
По умолчанию, если на компьютере производится сборка библиотеки DLL или исполняемого файла (EXE), компоновщик помещает полный путь и имя связанного PDB-файла в библиотеку DLL или в EXE-файл. Отладчик проверяет, присутствует ли файл символов в этом расположении.
Папка, в которой располагается сам DLL- или EXE-файл.
Любые расположения, указанные в параметрах отладчика для файлов символов. Сведения о добавлении и активации расположений символов см. в разделе Настройка расположения символов и параметров загрузки.
Любая папка локального кэша символов.
Указанные серверы и расположения символов — локальные, сетевые или в Интернете — такие как серверы символов корпорации Майкрософт, если эта возможность включена. Visual Studio может загружать отладочные файлы символов с серверов символов, которые реализуют протокол symsrv . Visual Studio Team Foundation Server и средства отладки для Windows — это два средства, которые могут использовать серверы символов.
Возможно использование следующих серверов символов:
Серверы символов во внутренней сети или на локальном компьютере Команда разработчиков или компания может создавать серверы символов для собственных продуктов и поддерживать кэш для символов из внешних источников. Можно иметь сервер символов на собственном компьютере.
Сторонние серверы символов Сторонние поставщики приложений Windows и библиотек могут предоставить доступ к серверу символов в Интернете.
При использовании сервера символов, отличного от общедоступных серверов корпорации Майкрософт, следует убедиться в том, что сервер и его путь заслуживают доверия. Поскольку файлы символов могут содержать произвольный исполняемый код, возможно возникновение угроз безопасности.
Настройка расположения файлов символов и параметров загрузки
По умолчанию отладчик выполняет поиск в различных расположениях символов. См. раздел Места, в которых отладчик ищет символы.
На странице Сервис > Параметры > Отладка > Символы можно выполнить следующие действия.
- Укажите и выберите пути поиска для файлов символов.
- Укажите серверы символов для Майкрософт, Windows или сторонних компонентов.
- Указать модули, для которых отладчик будет или не будет автоматически загружать символы.
- Эти параметры можно изменять во время выполнения отладки. См. раздел Загрузка символов при отладке.
Указание расположения символов и параметров загрузки:
В Visual Studio откройте меню Сервис > Параметры > Отладка > Символы (или Отладка > Параметры > Символы).
В разделе Места размещения файлов символов (.pdb) :
Чтобы добавить новое расположение сервера символов:
Поиск выполняется только в указанной папке. Любые вложенные папки, в которых требуется осуществлять поиск, должны быть внесены в список.
Добавление нового расположения сервера символов VSTS:
Чтобы изменить порядок загрузки для расположений символов, используйте клавиши CTRL+СТРЕЛКА ВВЕРХ и CTRL+СТРЕЛКА ВНИЗ либо значки со стрелками вверх и вниз.
Чтобы изменить URL-адрес или путь, дважды щелкните элемент или выберите его и нажмите клавишу F2.
Чтобы удалить элемент, выделите его и щелкните значок - .
Необязательно: чтобы повысить производительность загрузки символов, перейдите в раздел Кэшировать символы в этом каталоге и введите путь к локальной папке, в которую серверы символов могут копировать символы.
Не размещайте локальный кэш символов в защищенной папке, такой как C:\Windows или вложенные папки. Вместо этого следует использовать папку, для которой разрешены чтение и запись.
Если для проекта C++ задана переменная среды _NT_SYMBOL_PATH , она переопределяет значение, заданное в разделе Кэшировать символы в этом каталоге.
Укажите модули, которые отладчик должен загружать из расположений файлов символов (. pdb) при запуске.
Выберите Все модули, кроме исключенных (значение по умолчанию), чтобы загружать все символы для всех модулей, кроме тех, что были явно исключены. Чтобы исключить конкретные модули, выберите Укажите исключенные модули, щелкните значок + , введите имена исключаемых модулей и нажмите кнопку ОК.
Чтобы загружать из расположений файлов символов только заданные модули, выберите Загружать только указанные модули. Выберите Укажите включенные модули, щелкните значок + , введите имена включаемых модулей и нажмите кнопку ОК. Файлы символов для других модулей не загружаются.
Другие параметры символов для отладки
Для настройки дополнительных параметров символов перейдите в раздел Сервис > Параметры > Отладка > Общие (или Отладка > Параметры > Общие):
Загружать экспорты из DLL (только машинный код)
Загружает таблицы экспорта библиотеки DLL для C/C++. Дополнительные сведения см. в разделе Таблицы экспорта библиотеки DLL. Поскольку на чтение данных экспорта для библиотеки DLL затрачиваются определенные ресурсы, по умолчанию загрузка таблиц экспорта отключена. Кроме того, вы можете использовать dumpbin /exports в командной строке сборки C/C++.
Включить отладку на уровне адреса и Показывать дизассемблированный код, если исходный код недоступен
Дизассемблированный код отображается во всех случаях, когда исходные файлы или файлы символов не найдены.
Включить поддержку сервера системы управления версиями
Если исходный код на локальном компьютере отсутствует или PDB-файл не соответствует исходному коду, при отладке приложения используется сервер системы управления версиями. Сервер системы управления версиями принимает запросы на файлы и возвращает сами файлы из этой системы. Сервер системы управления версиями использует для работы библиотеку srcsrv.dll, которая нужна для чтения PDB-файла приложения. Этот PDB-файл содержит указатели на репозиторий исходного кода, а также команды, используемые для получения исходного кода из репозитория.
Чтобы ограничить набор команд, которые библиотека srcsrv.dll может исполнять из PDB-файла приложения, можно включить список допустимых команд в файл srcsrv.ini. Поместите файл srcsrv.ini в ту же папку, что и файлы srcsrv.dll и devenv.exe.
В PDB-файл приложения можно внедрять произвольные команды, поэтому убедитесь, что в файл srcsrv.ini включены только те из них, которые требуется выполнять. Любая попытка выполнить команду не из файла srcsvr.ini вызовет диалоговое окно подтверждения. Дополнительные сведения см. в статье Предупреждение системы безопасности. Отладчик должен выполнить команду без доверия.
Параметры команд не проверяются, поэтому будьте внимательны с доверенными командами. Например, если вы включили команду cmd.exe в файл srcsrv.ini, пользователь-злоумышленник может указать параметры, которые сделают выполнение команды cmd.exe опасным.
Выберите этот элемент и нужные дочерние элементы. Параметры Разрешить выполнение частично доверенных сборок (только управляемых) на сервере системы управления версиями и Всегда выполнять ненадежные команды исходного сервера без запроса могут повысить риски безопасности, описанные выше.
Параметры символов для компилятора
Если при выполнении сборки проекта из интегрированной среды разработки Visual Studio используется стандартная конфигурация сборки Отладка, компилятор C++ и управляемые компиляторы создают соответствующие файлы символов для кода. Параметры компилятора также можно задать в коде.
Сведения о настройке параметров компилятора для конфигураций сборки в Visual Studio см. в статье Настройка конфигураций отладки и выпуска в Visual Studio.
Параметры C/C++
PDB-файл для C/C++ создается при сборке с параметрами /ZI или /Zi. В Visual C++ параметр /Fd присваивает имя PDB-файлу, который создается компилятором. При создании проекта в Visual Studio с использованием интегрированной среды разработки используется параметр /Fd с целью создания PDB-файла с именем .pdb.
При сборке приложения, написанного на C/C++, с использованием файла makefile и указанием параметра /ZI или /Zi без /Fd компилятор создает два описанных ниже PDB-файла:
VC.pdb, где представляет версию компилятора Microsoft C++, например VC11.pdb.
Файл VC.pdb хранит все отладочные данные для отдельных объектных файлов и располагается в том же каталоге, что и файл makefile проекта. Каждый раз, создавая объектный файл, компилятор C/C++ добавляет отладочную информацию в файл VC.pdb. Поэтому, даже если исходный файл включает общие файлы заголовков, такие как , определения типов (typedef) из этих заголовков сохраняются только один раз, а не включаются в каждый объектный файл. Вставляемая информация включает информацию о типах, но не включает символьную информацию, такую как определения функций.
Файл .pdb содержит все отладочные данные из EXE-файла проекта и располагается в подкаталоге \debug. Файл .pdb содержит полные отладочные данные, включая прототипы функций, а не только сведения о типах, содержащиеся в файле .pdb.
Файлы VC.pdb и .pdb поддерживают добавочные обновления. Компоновщик также включает путь к PDB-файлам в EXE-файл или DLL-файл, которые он создает.
Таблицы экспорта библиотеки DLL
В выходных данных команды dumpbin /exports можно увидеть точное имя функции, включая символы, отличные от буквенно-цифровых. Просмотр точных имен функций полезен для задания точки останова в функции, поскольку в отладчике имена функций могут быть усечены в других местах. Дополнительные сведения см. в разделе dumpbin /exports.
Веб-приложения
Загрузка символов при отладке
Для загрузки символов или изменения параметров символов во время отладки можно использовать окна Модули, Стек вызовов, Локальные, Видимые или Контрольные значения. Дополнительные сведения см. в разделе Дополнительные сведения о присоединении отладчика к приложению.
Работа с символами в окне "Модули"
В процессе отладки в окне Модули можно узнать, какие модули будут рассматриваться отладчиком в качестве пользовательского кода (или "моего кода"), а также проверить состояние загрузки символов для них. Кроме того, в окне Модули вы можете отслеживать состояние загрузки символов, загружать символы и изменять параметры символов.
Отслеживание или изменение расположений и параметров символов во время отладки:
- Чтобы открыть окно Модули во время отладки, выберите Отладка >Окна >Модули (или нажмите клавиши CTRL + ALT + U).
- В окне Модули щелкните правой кнопкой мыши заголовки Состояние символов или Файл символов либо любой модуль.
- В контекстном меню выберите один из следующих вариантов:
Использование страниц "Символы не загружены" или "Нет исходного кода"
Отладчик может прервать выполнение в коде, для которого отсутствуют файлы символов или исходные файлы, в результате любого из следующих событий:
- Шаг с заходом в код.
- Приостановка выполнения кода из-за точки останова или исключения.
- Переключение на другой поток.
- Изменение кадра стека двойным щелчком по кадру в окне Стек вызовов.
Когда происходит любое из этих событий, отладчик отображает страницу Символы не загружены или Нет исходного кода, чтобы помочь найти и загрузить необходимые символы или исходный код.
Использование страницы "Символы не загружены" для поиска и загрузки отсутствующих символов:
Если отладчик находит PDB-файл после выполнения одного из этих действий и может извлечь исходный файл на основании информации в PDB-файле, отображается исходный код. В противном случае отображается страница Нет исходного кода, на которой описывается проблема и приводятся ссылки на действия, которые могут решить ее.
Добавление путей поиска исходных файлов в решение:
Вы можете указать расположения, в которых отладчик будет искать исходные файлы, а также исключить из поиска определенные файлы.
Выберите решение в обозревателе решений и затем щелкните значок Свойства, нажмите клавиши ALT+ВВОД либо щелкните это решение правой кнопкой мыши и выберите пункт Свойства.
Выберите Исходные файлы отладки.
В разделе Каталоги, содержащие исходный код введите или выберите расположения исходного кода для поиска. Щелкните значок Новая строка для добавления дополнительных расположений, значки со стрелками вверх и вниз для изменения их порядка либо значок X для их удаления.
Отладчик выполняет поиск только в указанном каталоге. Любые подкаталоги, в которых требуется осуществлять поиск, должны быть внесены в список.
В разделе Не выполнять поиск следующих исходных файлов введите имена исходных файлов, исключаемых из поиска.
Every time I start a new piece of software I have to go into the configuration and turn off pdb file generation and the Visual Studio hosting process for Release builds. Is there any way to tell Visual Studio (2008 specifically) that I want to do that for all projects for the rest of time?
I work on mostly internal software and we don't have automated builds (yet) so it's just another file to ship/deselect prior to passing the build to the guys who roll out the software. I'm just trying to make things as clean & easy as possible for them and me.
3 Answers 3
You should be able to handle the PDB issue in a similar way, but as I said I don't recommend turning those off, so I'll leave it as an exercise :)
This applies to VS2008, but my guess is that other editions have a similar scheme. In fact, VS2010 uses the same approach, but obviously the version number in the directory is 10.0 instead of 9.0.
For the record, and since Google led me to that thread, this trick applies to VS2012 too (at least for hosting process, I don't want to disable PDB files so didn't try). Thanks again, you made my day!
Turning this off in my .csproj file caused MSB3027 when compiling. That is, the output file cannot be written since it is locked.
@l33t Did you remember to close the file? If it is still open it will be locked. I just verified this on VS2012.
@l33t if you just want to change this for the current project, you can just go to the debug setting for the project. No need to edit the .csproj file for that.
In VS 2010 you will find a project property to control .pdb generation under Project Properties -> Build -> Advanced. -> Debug Info
Set this to "none" to suppress .pdb generation.
That's on a per project basis though. At the time I wanted to do this once for all projects forever, rather than having to go into each project as it was set up and change it.
Why not add a post build step that deletes these files you don't want. Hmm, that still another step, not what you wanted :-(
What about writing a little helper app that does a FindFirstFile and FindNextFile loop looking for PDB and shost files in your release directories. When it finds them, it deletes them. Or better still moves them to an archive location - this allows to remove them from the release packaging issues but still keep the files in case you need them for bug analysis.
Plus because its a helper app you can just run it once as part of your pre-handoff to release staff.
We use this technique for lots of things:
- Ensuring DLLs are up to date (basically an intelligent update for the whole build tree)
- Cleaning VC builds better than "batch build" can (removing some of those files that can crash Visual Studio)
- Archiving certain in a particular fashion (similar to what I've suggested for you)
- etc
I'm with Brian - you should keep these files. If you need to debug any bug or failure, you will need these files.
Проекты Visual Studio имеют отдельные конфигурации выпуска и отладки для вашей программы. Производится построение отладочной версии для отладки и версии выпуска для окончательного выпуска программы.
Отладочная конфигурация программы компилируется с полной символической отладочной информацией и без оптимизации. Оптимизация усложняет отладку, поскольку усложняется связь между исходным кодом и сгенерированными инструкциями.
Конфигурация выпуска для программы полностью оптимизируется и не содержит символической отладочной информации. Для управляемого кода и кода C++ отладочная информация может быть создана в виде PDB-файлов в зависимости от используемых параметров компилятора. Создание PDB-файлов может оказаться полезным, если позднее возникнет необходимость в отладке версии выпуска.
Дополнительные сведения о конфигурациях сборки см. в статье Общие сведения о конфигурациях сборки.
Изменение конфигурации сборки
Для изменения конфигурации сборки сделайте следующее.
На панели инструментов выберите либо Отладка, либо Выпуск из списка Конфигурации решения.
В меню Сборка щелкните Диспетчер конфигураций, а затем выберите Отладка или Выпуск.
Можно выбрать создание файлов символов (PDB) и отладочные данные, которые необходимо включить. Для большинства типов проектов компилятор создает файлы символов по умолчанию для отладочных и окончательных сборок, в то время как другие параметры по умолчанию отличаются по типу проекта и версии Visual Studio.
Отладчик загружает PDB-файл для исполняемого файла, только если он точно соответствует PDB-файлу, который был создан при сборке исполняемого файла (то есть это должен быть либо оригинальный PDB-файл, либо его копия). Дополнительные сведения см. в статье Почему Visual Studio требует, чтобы файлы символов отладчика точно соответствовали двоичным файлам, с которыми они были собраны?
Каждый тип проекта может иметь свой способ установки этих параметров.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
В боковой области выберите Сборка > Общие.
В разделе Оптимизация кода выберите Отладка или Выпуск.
В списке Отладочные символы выберите PDB-файл, текущая платформа, PDB-файл, переносимый или Внедренный.
Компилятор создает файлы символов в той же папке, что и исполняемый файл или основной выходной файл.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
В боковой области выберите Сборка (или Компилировать в Visual Basic).
В списке Конфигурация в верхней части выберите Отладка или Выпуск.
В списке Сведения об отладке (или Создать сведения об отладке в Visual Basic) выберите Полные, Только для PDB или Переносимые.
Компилятор создает файлы символов в той же папке, что и исполняемый файл или основной выходной файл.
Создание файлов символов для проекта C++
В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
В списке Конфигурация выберите Отладка или Выпуск.
В боковой области выберите Компоновщик > Отладка, а затем выберите параметры в разделе Создать сведения об отладке.
В большинстве проектов C++ используется значение по умолчанию Создать отладочную информацию (/DEBUG) .
Дополнительные сведения о параметрах проекта для конфигурации отладки C++ см. в разделе Параметры проекта для конфигурации отладки C++.
Настройте параметры для раздела Создание файлов базы данных программы.
В большинстве проектов C++ значением по умолчанию является $(OutDir)$(TargetName).pdb , которое создает PDB-файлы в выходной папке.
Компилятор создает файлы символов в той же папке, что и исполняемый файл или основной выходной файл.
Файлы базы данных программ (PDB) также называются файлами символов и используются для сопоставления идентификаторов и инструкций в исходном коде вашего проекта с соответствующими идентификаторами и инструкциями в скомпилированных приложениях. С помощью этих файлов отладчик связывается с исходным кодом, что позволяет выполнять его отладку.
При создании проекта из интегрированной среды разработки Visual Studio со стандартной конфигурацией отладочной сборки компилятор создает необходимые файлы символов. В этой статье описывается, как управлять файлами символов в интегрированной среде разработки, а именно:
Подробные сведения о файлах символов см. в следующих статьях:
Принципы использования файлов символов
PDB-файл содержит отладочные данные и сведения о состоянии проекта, позволяющие выполнять инкрементную компоновку отладочной конфигурации приложения. Отладчик Visual Studio использует PDB-файлы для определения двух ключевых элементов информации во время отладки:
- Имя исходного файла и номер строки, которая отображается в интегрированной среде разработки Visual Studio.
- Расположение точки останова в приложении.
В файлах символов также указываются расположение исходных файлов и при необходимости сервер, с которого они будут извлекаться.
Отладчик загружает только те PDB-файлы, которые точно соответствуют PDB-файлам, созданным при построении приложения (то есть исходные PDB-файлы или их копии). Точное дублирование является обязательным, поскольку компоновка приложения может быть изменена даже в том случае, если сам код не изменялся. Дополнительные сведения см. в статье Почему Visual Studio требует, чтобы файлы символов отладчика точно соответствовали двоичным файлам, с которыми они были собраны?
Если требуется выполнить отладку кода за пределами исходного кода проекта, например кода Windows или стороннего кода, вызываемого проектом, необходимо указать расположение PDВ-файлов (и, если необходимо, исходных файлов) для внешнего кода, причем эти файлы должны точно соответствовать сборкам вашего приложения.
Места, в которых отладчик ищет символы
При отладке проекта в интегрированной среде разработки Visual Studio отладчик автоматически загружает файлы символов, которые он может найти по умолчанию.
При отладке управляемого кода на удаленном устройстве все необходимые файлы символов должны находиться либо на локальном компьютере, либо в расположении, указанном в параметрах отладчика.
Отладчик ищет файлы символов в следующих местах:
Расположение, указанное в библиотеке DLL или в исполняемом файле (EXE).
По умолчанию, если на компьютере производится сборка библиотеки DLL или исполняемого файла (EXE), компоновщик помещает полный путь и имя связанного PDB-файла в библиотеку DLL или в EXE-файл. Отладчик проверяет, присутствует ли файл символов в этом расположении.
Папка, в которой располагается сам DLL- или EXE-файл.
Любые расположения, указанные в параметрах отладчика для файлов символов. Сведения о добавлении и активации расположений символов см. в разделе Настройка расположения символов и параметров загрузки.
Любая папка локального кэша символов.
Указанные серверы и расположения символов — локальные, сетевые или в Интернете — такие как серверы символов корпорации Майкрософт, если эта возможность включена. Visual Studio может загружать отладочные файлы символов с серверов символов, которые реализуют протокол symsrv . Visual Studio Team Foundation Server и средства отладки для Windows — это два средства, которые могут использовать серверы символов.
Возможно использование следующих серверов символов:
Серверы символов во внутренней сети или на локальном компьютере Команда разработчиков или компания может создавать серверы символов для собственных продуктов и поддерживать кэш для символов из внешних источников. Можно иметь сервер символов на собственном компьютере.
Сторонние серверы символов Сторонние поставщики приложений Windows и библиотек могут предоставить доступ к серверу символов в Интернете.
При использовании сервера символов, отличного от общедоступных серверов корпорации Майкрософт, следует убедиться в том, что сервер и его путь заслуживают доверия. Поскольку файлы символов могут содержать произвольный исполняемый код, возможно возникновение угроз безопасности.
Настройка расположения файлов символов и параметров загрузки
По умолчанию отладчик выполняет поиск в различных расположениях символов. См. раздел Места, в которых отладчик ищет символы.
На странице Сервис > Параметры > Отладка > Символы можно выполнить следующие действия.
- Укажите и выберите пути поиска для файлов символов.
- Укажите серверы символов для Майкрософт, Windows или сторонних компонентов.
- Указать модули, для которых отладчик будет или не будет автоматически загружать символы.
- Эти параметры можно изменять во время выполнения отладки. См. раздел Загрузка символов при отладке.
Указание расположения символов и параметров загрузки:
В Visual Studio откройте меню Сервис > Параметры > Отладка > Символы (или Отладка > Параметры > Символы).
В разделе Места размещения файлов символов (.pdb) :
Чтобы добавить новое расположение сервера символов:
Поиск выполняется только в указанной папке. Любые вложенные папки, в которых требуется осуществлять поиск, должны быть внесены в список.
Добавление нового расположения сервера символов VSTS:
Чтобы изменить порядок загрузки для расположений символов, используйте клавиши CTRL+СТРЕЛКА ВВЕРХ и CTRL+СТРЕЛКА ВНИЗ либо значки со стрелками вверх и вниз.
Чтобы изменить URL-адрес или путь, дважды щелкните элемент или выберите его и нажмите клавишу F2.
Чтобы удалить элемент, выделите его и щелкните значок - .
Необязательно: чтобы повысить производительность загрузки символов, перейдите в раздел Кэшировать символы в этом каталоге и введите путь к локальной папке, в которую серверы символов могут копировать символы.
Не размещайте локальный кэш символов в защищенной папке, такой как C:\Windows или вложенные папки. Вместо этого следует использовать папку, для которой разрешены чтение и запись.
Если для проекта C++ задана переменная среды _NT_SYMBOL_PATH , она переопределяет значение, заданное в разделе Кэшировать символы в этом каталоге.
Укажите модули, которые отладчик должен загружать из расположений файлов символов (. pdb) при запуске.
Выберите Все модули, кроме исключенных (значение по умолчанию), чтобы загружать все символы для всех модулей, кроме тех, что были явно исключены. Чтобы исключить конкретные модули, выберите Укажите исключенные модули, щелкните значок + , введите имена исключаемых модулей и нажмите кнопку ОК.
Чтобы загружать из расположений файлов символов только заданные модули, выберите Загружать только указанные модули. Выберите Укажите включенные модули, щелкните значок + , введите имена включаемых модулей и нажмите кнопку ОК. Файлы символов для других модулей не загружаются.
Другие параметры символов для отладки
Для настройки дополнительных параметров символов перейдите в раздел Сервис > Параметры > Отладка > Общие (или Отладка > Параметры > Общие):
Загружать экспорты из DLL (только машинный код)
Загружает таблицы экспорта библиотеки DLL для C/C++. Дополнительные сведения см. в разделе Таблицы экспорта библиотеки DLL. Поскольку на чтение данных экспорта для библиотеки DLL затрачиваются определенные ресурсы, по умолчанию загрузка таблиц экспорта отключена. Кроме того, вы можете использовать dumpbin /exports в командной строке сборки C/C++.
Включить отладку на уровне адреса и Показывать дизассемблированный код, если исходный код недоступен
Дизассемблированный код отображается во всех случаях, когда исходные файлы или файлы символов не найдены.
Включить поддержку сервера системы управления версиями
Если исходный код на локальном компьютере отсутствует или PDB-файл не соответствует исходному коду, при отладке приложения используется сервер системы управления версиями. Сервер системы управления версиями принимает запросы на файлы и возвращает сами файлы из этой системы. Сервер системы управления версиями использует для работы библиотеку srcsrv.dll, которая нужна для чтения PDB-файла приложения. Этот PDB-файл содержит указатели на репозиторий исходного кода, а также команды, используемые для получения исходного кода из репозитория.
Чтобы ограничить набор команд, которые библиотека srcsrv.dll может исполнять из PDB-файла приложения, можно включить список допустимых команд в файл srcsrv.ini. Поместите файл srcsrv.ini в ту же папку, что и файлы srcsrv.dll и devenv.exe.
В PDB-файл приложения можно внедрять произвольные команды, поэтому убедитесь, что в файл srcsrv.ini включены только те из них, которые требуется выполнять. Любая попытка выполнить команду не из файла srcsvr.ini вызовет диалоговое окно подтверждения. Дополнительные сведения см. в статье Предупреждение системы безопасности. Отладчик должен выполнить команду без доверия.
Параметры команд не проверяются, поэтому будьте внимательны с доверенными командами. Например, если вы включили команду cmd.exe в файл srcsrv.ini, пользователь-злоумышленник может указать параметры, которые сделают выполнение команды cmd.exe опасным.
Выберите этот элемент и нужные дочерние элементы. Параметры Разрешить выполнение частично доверенных сборок (только управляемых) на сервере системы управления версиями и Всегда выполнять ненадежные команды исходного сервера без запроса могут повысить риски безопасности, описанные выше.
Параметры символов для компилятора
Если при выполнении сборки проекта из интегрированной среды разработки Visual Studio используется стандартная конфигурация сборки Отладка, компилятор C++ и управляемые компиляторы создают соответствующие файлы символов для кода. Параметры компилятора также можно задать в коде.
Сведения о настройке параметров компилятора для конфигураций сборки в Visual Studio см. в статье Настройка конфигураций отладки и выпуска в Visual Studio.
Параметры C/C++
PDB-файл для C/C++ создается при сборке с параметрами /ZI или /Zi. В Visual C++ параметр /Fd присваивает имя PDB-файлу, который создается компилятором. При создании проекта в Visual Studio с использованием интегрированной среды разработки используется параметр /Fd с целью создания PDB-файла с именем .pdb.
При сборке приложения, написанного на C/C++, с использованием файла makefile и указанием параметра /ZI или /Zi без /Fd компилятор создает два описанных ниже PDB-файла:
VC.pdb, где представляет версию компилятора Microsoft C++, например VC11.pdb.
Файл VC.pdb хранит все отладочные данные для отдельных объектных файлов и располагается в том же каталоге, что и файл makefile проекта. Каждый раз, создавая объектный файл, компилятор C/C++ добавляет отладочную информацию в файл VC.pdb. Поэтому, даже если исходный файл включает общие файлы заголовков, такие как , определения типов (typedef) из этих заголовков сохраняются только один раз, а не включаются в каждый объектный файл. Вставляемая информация включает информацию о типах, но не включает символьную информацию, такую как определения функций.
Файл .pdb содержит все отладочные данные из EXE-файла проекта и располагается в подкаталоге \debug. Файл .pdb содержит полные отладочные данные, включая прототипы функций, а не только сведения о типах, содержащиеся в файле .pdb.
Файлы VC.pdb и .pdb поддерживают добавочные обновления. Компоновщик также включает путь к PDB-файлам в EXE-файл или DLL-файл, которые он создает.
Таблицы экспорта библиотеки DLL
В выходных данных команды dumpbin /exports можно увидеть точное имя функции, включая символы, отличные от буквенно-цифровых. Просмотр точных имен функций полезен для задания точки останова в функции, поскольку в отладчике имена функций могут быть усечены в других местах. Дополнительные сведения см. в разделе dumpbin /exports.
Веб-приложения
Загрузка символов при отладке
Для загрузки символов или изменения параметров символов во время отладки можно использовать окна Модули, Стек вызовов, Локальные, Видимые или Контрольные значения. Дополнительные сведения см. в разделе Дополнительные сведения о присоединении отладчика к приложению.
Работа с символами в окне "Модули"
В процессе отладки в окне Модули можно узнать, какие модули будут рассматриваться отладчиком в качестве пользовательского кода (или "моего кода"), а также проверить состояние загрузки символов для них. Кроме того, в окне Модули вы можете отслеживать состояние загрузки символов, загружать символы и изменять параметры символов.
Отслеживание или изменение расположений и параметров символов во время отладки:
- Чтобы открыть окно Модули во время отладки, выберите Отладка >Окна >Модули (или нажмите клавиши CTRL + ALT + U).
- В окне Модули щелкните правой кнопкой мыши заголовки Состояние символов или Файл символов либо любой модуль.
- В контекстном меню выберите один из следующих вариантов:
Использование страниц "Символы не загружены" или "Нет исходного кода"
Отладчик может прервать выполнение в коде, для которого отсутствуют файлы символов или исходные файлы, в результате любого из следующих событий:
- Шаг с заходом в код.
- Приостановка выполнения кода из-за точки останова или исключения.
- Переключение на другой поток.
- Изменение кадра стека двойным щелчком по кадру в окне Стек вызовов.
Когда происходит любое из этих событий, отладчик отображает страницу Символы не загружены или Нет исходного кода, чтобы помочь найти и загрузить необходимые символы или исходный код.
Использование страницы "Символы не загружены" для поиска и загрузки отсутствующих символов:
Если отладчик находит PDB-файл после выполнения одного из этих действий и может извлечь исходный файл на основании информации в PDB-файле, отображается исходный код. В противном случае отображается страница Нет исходного кода, на которой описывается проблема и приводятся ссылки на действия, которые могут решить ее.
Добавление путей поиска исходных файлов в решение:
Вы можете указать расположения, в которых отладчик будет искать исходные файлы, а также исключить из поиска определенные файлы.
Выберите решение в обозревателе решений и затем щелкните значок Свойства, нажмите клавиши ALT+ВВОД либо щелкните это решение правой кнопкой мыши и выберите пункт Свойства.
Выберите Исходные файлы отладки.
В разделе Каталоги, содержащие исходный код введите или выберите расположения исходного кода для поиска. Щелкните значок Новая строка для добавления дополнительных расположений, значки со стрелками вверх и вниз для изменения их порядка либо значок X для их удаления.
Отладчик выполняет поиск только в указанном каталоге. Любые подкаталоги, в которых требуется осуществлять поиск, должны быть внесены в список.
В разделе Не выполнять поиск следующих исходных файлов введите имена исходных файлов, исключаемых из поиска.
Подскажите как избежать появление таких файлов при построении проекта?
Допустим у меня подключена библиотека Newtonsoft. При компиляции в папке debug у меня появляются 3 файла: Newtonsoft.dll, Newtonsoft.pdb, Newtonsoft.xml из них по факту нужен только первый. Аналогичная проблема с файлами классов: .dll + .pdb. Подскажите так же как избежать появление *имя_программы*.vhost.exe и *имя_программы*.vhost.exe.config
Как склеить все файлы при компиляции (релиз)?
После того как скомпилировал проект в режиме релиза увидел вот такую картину. Как можно склеить все.
Зачем нужны лишние файлы
Создал WPF проект, завернул, в релизе кроме ехешника "WpfApplication6.exe" создаются еще файлы.
как убрать лишние файлы в папке?
В папке есть различные файлы с разным расширением. Как оставить в этой папке только картинки ? код.
COPY обрабатывает лишние файлы при склеивании
Добрый день. Подскажите, пожалуйста, мне необходимо объединить все одинаковые.
Вам нужен дистрибутив вашей программы?
Для создания дистрибутива необходим проект развертывания, а не просто нажатие клавиш ctrl+shift+b.
Ищите способы создания проекта развертывания, благо в интернете их полным-полно.
При компиляции в папке debug у меня появляются 3 файла: Newtonsoft.dll, Newtonsoft.pdb, Newtonsoft.xml из них по факту нужен только первый.
Откройте файл .csproj в любом текстовом редакторе и в элемент PropertyGroup для нужной конфигурации добавьте такой элемент:
Чтобы не появлялся .pdb, в свойствах проекта в закладке Build ткните кнопку Advanced и в списке Debug Info выберите None (перестанет работать пошаговая отладка).
Свойства проекта, закладка Debug, убрать галку с Enable the Visual Studio hosting process.
Это ответ на вопрос.
А решение — делать нормальный проект разверстки, как предложили выше.
Читайте также: