Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Символы полезны для отладки и других средств диагностики. Содержимое файлов символов зависит от языков, компиляторов и платформ. На высоком уровне символы — это сопоставление исходного кода и двоичного файла, созданного компилятором. Эти сопоставления используются такими средствами, как Visual Studio и Visual Studio Code для разрешения сведений об номере исходной строки или локальных имен переменных.
Документация по символам Windows содержит более подробную информацию о символах для Windows, хотя многие концепции также применимы к другим платформам.
Узнайте о переносимом формате PDB .NET
.NET Core представил новый формат файла символов (PDB) — переносимого PDB. В отличие от традиционных PDOB-файлов, которые доступны только для Windows, переносимые PDF-файлы можно создавать и читать на всех платформах.
Что такое PDB?
PDB-файл является вспомогательным файлом, созданным компилятором для предоставления других средств, особенно отладчиков, сведений о том, что находится в основном исполняемом файле и как он был создан. Например, отладчик считывает PDB для сопоставления foo.cs строки 12 с правильным расположением исполняемого файла, чтобы он смог задать точку останова. Формат PDB для Windows существует уже долгое время и произошел из других более старых форматов символов отладки. Она была первоначально создана в качестве формата для программ на языках C/C++. В первом выпуске .NET Framework формат Windows PDB был расширен для поддержки .NET.
Формат Portable PDB был представлен в .NET Core и используется по умолчанию при использовании .NET. При выборе платформы .NET Framework можно включить переносимые символы PDB, указав <DebugType>portable</DebugType>
в файле проекта. Переносимый формат PDB основан на формате метаданных ECMA-335. Дополнительные сведения см. в статье "Переносимая PDB версии 1.0: спецификация формата". Средства диагностики могут использовать библиотеку System.Reflection.Metadata для чтения переносимых PDB-файлов (см. пример System.Reflection.Metadata.Document).
Использование правильного формата PDB для вашего сценария
Ни переносимые PDB-файлы, ни PDB-файлы Windows не поддерживаются везде. Чтобы решить, какой формат следует использовать, рассмотрите место использования и отладки проекта. Если у вас есть проект, который вы хотите использовать и отлаживать в обоих форматах, можно использовать разные конфигурации сборки и создать проект дважды для поддержки обоих типов потребителей.
Поддержка переносимых PDB-файлов
Переносимая PDB может быть прочитана в любой операционной системе и является рекомендуемой форматом символов для управляемого кода. Однако существует ряд устаревших средств и приложений, где они не поддерживаются:
Приложения, предназначенные для .NET Framework 4.7.1 или более ранних версий: вывод трассировки стека с сопоставлением номеров строк (например, на странице ошибки ASP.NET). Названия методов не изменяются, только имена исходных файлов и номера строк не поддерживаются.
При использовании декомпилеров .NET, таких как ildasm или рефлектор .NET, вы не увидите сопоставления исходных строк или имена локальных параметров.
Последние версии DIA и инструментов, которые используют DIA для чтения символов, таких как WinDBG, поддерживают переносимые PDB, но старые версии не поддерживают.
Могут быть более старые версии профилировщиков, которые не поддерживают переносимые PDB.
Чтобы использовать переносимые PDB-файлы в средствах, которые не поддерживают их, можно использовать Pdb2Pdb, который преобразует переносимые PDB-файлы в PDB-файлы Windows и наоборот.
Поддержка Windows PDB-файлов
Файлы PDB Windows могут создаваться или читаться только в Windows. Использование PDB-файлов Windows для управляемого кода устарело и требуется только для инструментов для устаревших систем. Рекомендуется использовать переносимые PDF-файлы вместо PDF-файлов Windows, так как некоторые новые функции компилятора реализуются только для переносимых PDF-файлов.
См. также
- dotnet-symbol можно использовать для загрузки файлов символов для библиотек платформы
- Документация по Windows по символам