Símbolos

Los símbolos son útiles para la depuración y otras herramientas de diagnóstico. El contenido de los archivos de símbolos varia según los lenguajes, los compiladores y las plataformas. En un nivel alto, los símbolos son una asignación entre el código fuente y el binario generado por el compilador. Estas asignaciones las usan herramientas como Visual Studio y Visual Studio Code para resolver la información de números de línea de origen o los nombres de variables locales.

La documentación de Windows sobre símbolos contiene información más detallada sobre los símbolos de Windows, aunque muchos de los conceptos también se aplican a otras plataformas.

Más información sobre el formato PDB portable de .NET

.NET Core introdujo un nuevo formato de archivo de símbolos (PDB): PDB portable. A diferencia de los PDB tradicionales, que son solo para Windows, los PDB portables pueden crearse y leerse en todas las plataformas.

¿Qué es un PDB?

Un archivo PDB es un archivo auxiliar generado por un compilador para proporcionar a otras herramientas, especialmente a los depuradores, información sobre el contenido del archivo ejecutable principal y sobre cómo se ha generado. Por ejemplo, un depurador lee un archivo PDB para asignar la línea 12 de foo.cs a la ubicación ejecutable correcta para que pueda establecer un punto de interrupción. El formato PDB de Windows se ha usado durante mucho tiempo y ha evolucionado desde otros formatos de símbolos de depuración nativos que son incluso más antiguos. Comenzó como un formato para programas (C/C++) nativos. En la primera versión de .NET Framework, el formato PDB de Windows se amplió para admitir .NET.

El formato PDB portable se introdujo en .NET Core y se usa de forma predeterminada al tener como destino .NET. Al establecer .NET Framework como destino, puede habilitar símbolos PDB portables especificando <DebugType>portable</DebugType> en el archivo de proyecto. El formato PDB portable se basa en el formato de metadatos ECMA-335. Para más información, consulte el artículo sobre la especificación del formato PDB portable v1.0. Las herramientas de diagnóstico pueden usar la biblioteca System.Reflection.Metadata para leer archivos PDB portables (consulte System.Reflection.Metadata.Document para ver un ejemplo).

Uso del formato PDB correcto para su escenario

Ni los archivos PDB portables ni los archivos PDB de Windows se admiten en todas partes. Para decidir qué formato usar, tenga en cuenta dónde se usará y depurará el proyecto. Si tiene un proyecto que desea poder usar y depurar en ambos formatos, puede usar diferentes configuraciones de compilación y compilar el proyecto dos veces para admitir ambos tipos de consumidores.

Compatibilidad con archivos PDB portátiles

Un PDB portable se puede leer en cualquier sistema operativo y es el formato de símbolo recomendado para código administrado. Sin embargo, hay varias herramientas y aplicaciones heredadas en las que no se admiten:

  • Aplicaciones para .NET Framework 4.7.1 o versiones anteriores: los seguimientos de la pila de impresión con asignaciones a los números de línea (por ejemplo, en una página de error de ASP.NET). El nombre de los métodos no se ve afectado, solo no se admiten los nombres de archivo de origen y los números de línea.

  • Cuando se usan descompiladores de .NET como ildasm o reflector de .NET, no verá asignaciones de línea de origen ni nombres de parámetros locales.

  • Las versiones más recientes de DIA y herramientas que usan DIA para leer símbolos, como WinDBG, admiten archivos PDF portables, pero las versiones anteriores no.

  • Es posible que haya versiones anteriores de generadores de perfiles que no admitan archivos PDB portables.

Para usar archivos PDB portables en herramientas que no las admiten, puede usar Pdb2Pdb, que realiza una conversión entre archivos PDB portables y archivos PDB de Windows.

Compatibilidad con archivos PDB de Windows

Los archivos PDB de Windows solo se pueden escribir o leer en Windows. El uso de archivos PDB de Windows para código administrado está obsoleto y solo es necesario para las herramientas heredadas. Se recomienda usar archivos PDF portables en lugar de archivos PDF de Windows, ya que algunas características más recientes del compilador solo se implementan para archivos PDB portables.

Consulte también