Símbolos y archivos de símbolos
Cuando se vinculan aplicaciones, bibliotecas, controladores o sistemas operativos, el enlazador que crea los archivos .exe y .dll también crea varios archivos adicionales conocidos como archivos de símbolos.
Los archivos de símbolos contienen una variedad de datos que no son realmente necesarios al ejecutar los archivos binarios, pero que podrían ser muy útiles en el proceso de depuración.
Normalmente, los archivos de símbolos pueden contener:
Variables globales
Variables locales
Nombres de función y direcciones de sus puntos de entrada
Registros de omisión del puntero de marco (FPO)
Números de línea de origen
Cada uno de estos elementos se denomina, individualmente, un símbolo. Por ejemplo, un único archivo de símbolos Myprogram.pdb puede contener varios cientos de símbolos, como variables globales y nombres de función y cientos de variables locales. A menudo, las empresas de software publican dos versiones de cada archivo de símbolos: un archivo de símbolos completo que contiene símbolos públicos y símbolos privados, y un archivo reducido (quitado) que contiene solo símbolos públicos. Para más información, consulte Símbolos públicos y privados.
Al depurar, debe asegurarse de que el depurador pueda acceder a los archivos de símbolos asociados al destino que está depurando. Tanto la depuración en vivo como la depuración de archivos de volcado de memoria requieren símbolos. Debe obtener los símbolos adecuados para el código que desea depurar y cargar estos símbolos en el depurador.
Símbolos de Windows
Windows mantiene sus símbolos en archivos con la extensión .pdb.
El compilador y el enlazador controlan el formato de símbolo. El enlazador de Visual C++, coloca todos los símbolos en archivos .pdb.
El sistema operativo Windows se creó en dos versiones. La compilación gratuita (o compilación comercial) tiene archivos binarios relativamente pequeños y la compilación comprobada (o compilación de depuración) tiene archivos binarios más grandes, con más símbolos de depuración en el propio código. Las compilaciones comprobadas estaban disponibles en versiones anteriores de Windows antes de Windows 10, versión 1803. Cada una de estas compilaciones tenía sus propios archivos de símbolos. Al depurar un destino en Windows, debe usar los archivos de símbolos que coincidan con la compilación de Windows en el destino.
En la tabla siguiente se enumeran varios de los directorios que existen en un árbol de símbolos estándar de Windows:
Directorio | Contiene archivos de símbolos para |
---|---|
ACM |
Archivos del Administrador de compresión de audio de Microsoft |
COM |
Archivos ejecutables (.com) |
CPL |
programas de Panel de control |
Archivo DLL |
Archivos de biblioteca de vínculos dinámicos (.dll) |
DRV |
Archivos de controlador (.drv) |
EXE |
Archivos ejecutables (.exe) |
SCR |
Archivos del protector de pantalla |
SYS |
Archivos de controlador (.sys) |