Un símbolo de depuración es un tipo especial de símbolo que adjunta información adicional a la tabla de símbolos de un archivo de objeto , como una biblioteca compartida o un ejecutable . Esta información permite que un depurador simbólico obtenga acceso a información del código fuente del binario, como los nombres de los identificadores, incluidas las variables y las rutinas.
La información simbólica puede compilarse junto con el archivo binario del módulo , o distribuirse en un archivo separado, o simplemente descartarse durante la compilación y / o vinculación .
Esta información puede ser útil al tratar de investigar y fijar un estrellarse solicitud o cualquier otro defecto. [1]
Símbolos incrustados
Los símbolos de depuración generalmente incluyen no solo el nombre de una función o variable global, sino también el nombre del archivo de código fuente en el que aparece el símbolo, así como el número de línea en el que está definido. Otra información incluye el tipo de símbolo (entero, flotante, función, excepción, etc.), el alcance (alcance de bloque o alcance global ), el tamaño y, para las clases, el nombre de la clase y los métodos y miembros. en eso. Toda esta información adicional puede ocupar bastante espacio, especialmente los nombres de archivo y los números de línea. Por lo tanto, los binarios con símbolos de depuración pueden llegar a ser bastante grandes, a menudo varias veces el tamaño del archivo eliminado. [2] Para evitar este tamaño adicional, la mayoría de las distribuciones de sistemas operativos envían binarios que se eliminan , es decir, de los que se han eliminado todos los símbolos de depuración. Esto se logra, por ejemplo, con el comando strip en unix.
Algunos compiladores generarán la información de depuración simbólica en un archivo separado, en lugar de colocarlo junto con el binario.
SysV ABI
La interfaz binaria de la aplicación SysV incluye una especificación para el formato de los símbolos de depuración. Esto permite que cualquier compilador o ensamblador compatible cree símbolos de depuración en un formato estandarizado y que cualquier depurador, como GDB , obtenga acceso y muestre estos símbolos. Por ejemplo, parte de la información de depuración importante incluye la línea de código en el archivo fuente que define ese símbolo (una función o variable global), así como los símbolos asociados con los marcos de excepción.
Símbolos de depuración de Microsoft
Los compiladores de Microsoft generan un archivo llamado archivo PDB que contiene símbolos de depuración. Algunas empresas envían la PDB en su CD / DVD para permitir la resolución de problemas y otras empresas (como Microsoft y Mozilla Corporation ) permiten descargar símbolos de depuración de Internet. El depurador de WinDBG y el IDE de Visual Studio se pueden configurar para descargar automáticamente símbolos de depuración para DLL de Windows bajo demanda. Los símbolos de depuración de PDB que distribuye Microsoft incluyen solo funciones públicas, variables globales y sus tipos de datos. La Corporación Mozilla tiene una infraestructura similar sino que distribuye información de depuración completa.
Tanto Microsoft como Mozilla también ofrecen el código fuente (Microsoft proporciona ciertos componentes, como la mayoría de .NET Framework , mientras que Mozilla ofrece el código fuente completo) para facilitar la depuración.
manzana
En las plataformas Apple , los símbolos de depuración se emiten opcionalmente durante el proceso de compilación como archivos dSYM. Apple utiliza el término "simbolizar" para referirse al reemplazo de direcciones en archivos de diagnóstico con valores legibles por humanos. [3]
Historia
Los depuradores simbólicos han existido desde la era del mainframe , casi desde la primera introducción de pantallas de computadora adecuadas en las que mostrar la información de depuración simbólica (e incluso antes con volcados simbólicos en papel). No estaban restringidos a lenguajes compilados de alto nivel y también estaban disponibles para programas en lenguaje ensamblador . Para IBM / 360 , estos produjeron un código objeto (a pedido) que incluía "tarjetas SYM". Por lo general, el cargador de programas los ignoraba, pero eran útiles para un depurador simbólico, ya que se guardaban en la misma biblioteca de programas que el código lógico ejecutable.
Ver también
- CA / EZTEST
- Formato de datos de depuración
- Microsoft SYMDEB
- SID de investigación digital (depurador de instrucciones simbólicas)
Referencias
- ^ "Depuración con símbolos" . Centro de desarrollo de Windows . Microsoft . Archivado desde el original el 11 de enero de 2020 . Consultado el 11 de enero de 2020 .
- ^ "¿Para qué sirven los símbolos?" . TechNet . Microsoft . 2008-07-15.
- ^ "Comprensión y análisis de informes de fallos de aplicaciones iOS" . Biblioteca para desarrolladores de iOS . Apple, Inc. 8 de enero de 2018 [29 de enero de 2009]. Nota técnica TN2151. Archivado desde el original el 19 de diciembre de 2019 . Consultado el 11 de enero de 2020 .
Servidores públicos de símbolos y fuentes
- Servidor de símbolos de Microsoft
- Servidor de origen de referencia de Microsoft: http://referencesource.microsoft.com/
- Servidor de origen de Mozilla: https://developer.mozilla.org/en/Using_the_Mozilla_source_server
- Bibliotecas .NET en SymbolSource: http://www.symbolsource.org/