При сборке «Debug» в Visual Studio он выводит файл pdb, чтобы вы получили подробную информацию при возникновении исключения.
Действительно ли загружается информация в файлах pdb при запуске исполняемого файла или позже в момент возникновения исключения?
Декомпиляторы, такие как IDA, загружают файлы символов, когда он анализирует ваш исполняемый файл или когда вы говорите ему загружать определенные символы вместе с вашим исполняемым файлом, если он соответствует исполняемому файлу, отлаживаемому в данный момент.
Отладчики, такие как отладчик Visual Studio, загружают файлы и символы PDB, как только он начинает отладку, а не при возникновении исключения.
Страница MSDN в файлах PDB далее подчеркивает это:
Отладчик Visual Studio использует файл project.PDB, созданный
компоновщик напрямую и встраивает абсолютный путь к PDB в EXE или
Файл DLL. Если отладчик не может найти файл PDB в этом месте или
если путь неверен (например, если проект был перемещен в
другой компьютер), отладчик ищет путь, содержащий EXE,
Путь символа, указанный на страницах свойств решения (общий
Папка свойств, страница «Файлы отладочных символов»). Отладчик не будет
загрузить PDB, который не соответствует отлаживаемому двоичному файлу.
Конечно, это программа составлена без / отладки, путь к файлу PDB не будет включен в полученный exe или DLL.
Да, они загружаются вне VS. Если ваш код вылетает при загрузке с PDB, вы увидите расположение исходного кода и номера строк.