Articulo de referencia

Símbolo de depuración

Un símbolo de depuración es un tipo especial de símbolo que añade información adicional a la tabla de símbolos de un archivo objeto , como una biblioteca compartida o un ejecuta...

Un símbolo de depuración es un tipo especial de símbolo que añade información adicional a la tabla de símbolos de un archivo objeto , como una biblioteca compartida o un ejecutable . Esta información permite que un depurador simbólico acceda 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 , distribuirse en un archivo separado o simplemente descartarse durante la compilación y/o el enlace .

Esta información puede ser útil al intentar investigar y solucionar un fallo en una aplicación o cualquier otra avería. [ 1 ]

Información de depuración

Los símbolos de depuración suelen incluir no solo el nombre de una función o variable global, sino también el nombre del archivo de código fuente donde aparece el símbolo, así como el número de línea donde se define. Otra información incluye el tipo de símbolo (entero, flotante, función, excepción, etc.), el ámbito ( ámbito de bloque o ámbito global ), el tamaño y, en el caso de las clases, el nombre de la clase y sus métodos y miembros.

Parte de la información de depuración 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.

Esta información puede almacenarse en la tabla de símbolos de un archivo objeto, un archivo ejecutable o una biblioteca compartida, o bien en un archivo aparte.

En algunos sistemas, por ejemplo, z/OS , la información de depuración contiene más que solo el símbolo tabulado, por ejemplo, los datos ADATA que se analizan en el §  OS/390 y otros contienen código fuente.

La información de depuración 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 volverse bastante grandes, a menudo varias veces el tamaño del archivo sin símbolos de depuración. [ 2 ] Para evitar este tamaño adicional, la mayoría de las distribuciones de sistemas operativos incluyen binarios sin símbolos de depuración. Esto se logra, por ejemplo, con el comando `strip` en Unix . Si la información de depuración está en archivos separados, estos archivos generalmente no se incluyen en la distribución.

Símbolos incrustados

Sistemas tipo Unix

El formato stabs era un formato antiguo para símbolos de depuración en sistemas tipo Unix . El formato DWARF , más reciente y con especificaciones formales, lo ha reemplazado en gran medida. Esta especificación permite que cualquier compilador o ensamblador compatible cree símbolos de depuración en un formato estandarizado, y que cualquier depurador, como el Depurador GNU (GDB), acceda a estos símbolos y los muestre.

IBM

Los compiladores para la línea de mainframes de IBM descendientes del System/360 tienen una opción TEST que hace que el compilador incluya información de depuración [ 3 ] [ 4 ] [ 5 ] en el archivo objeto. De manera similar, los editores Binder y linkage tienen una opción TEST que hace que la información de depuración se conserve [ 6 ] en el módulo de carga. Varias herramientas de depuración, por ejemplo, OS/360 TESTRAN, TSO TEST, tienen la capacidad de usar las definiciones de símbolos incrustadas.

Archivos de depuración externos

OS/390 y otros

El ensamblador de alto nivel de IBM (HLASM) y otros compiladores que se ejecutan, por ejemplo, en z/OS , tienen una opción ADATA que produce un archivo de datos asociados (ADATA) [ 7 ] que contiene más información que la producida por la antigua opción TEST. En particular, el archivo ADATA incluye líneas de código fuente y sus metadatos.

Símbolos de depuración de Microsoft

Los compiladores de Microsoft generan un archivo de base de datos de programa (PDB) que contiene símbolos de depuración. Algunas empresas incluyen el PDB en sus CD/DVD para facilitar la resolución de problemas, mientras que otras (como Microsoft y Mozilla Corporation ) permiten descargar los símbolos de depuración de Internet. El depurador WinDbg y el IDE de Visual Studio se pueden configurar para descargar automáticamente los símbolos de depuración de las bibliotecas de vínculos dinámicos (DLL) de Windows cuando sea necesario. Los símbolos de depuración PDB que distribuye Microsoft incluyen únicamente funciones públicas, variables globales y sus tipos de datos. Mozilla Corporation cuenta con una infraestructura similar, pero distribuye información de depuración completa.

Manzana

En las plataformas de 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. [ 8 ]

Historia

Los depuradores simbólicos existen desde la era de los mainframes , prácticamente desde la introducción de las primeras pantallas adecuadas para mostrar la información de depuración simbólica (e incluso antes, con volcados simbólicos en papel). No se limitaban a lenguajes compilados de alto nivel, sino que también estaban disponibles para programas en lenguaje ensamblador . Para el IBM/360 , estos generaban código objeto (bajo demanda) que incluía "tarjetas SYM". Estas solían ser ignoradas por el cargador de programas, pero resultaban útiles para un depurador simbólico, ya que se almacenaban en la misma biblioteca de programas que el código lógico ejecutable.

Véase también

Referencias

  1. "Depuración con símbolos" . Centro de desarrollo de Windows . Microsoft . Archivado del original el 11/01/2020 . Consultado el 11/01/2020 .
  2. "¿Para qué sirven los símbolos?" . TechNet . Microsoft . 15 de julio de 2008. Archivado del original el 26 de diciembre de 2014. Consultado el 4 de enero de 2015 .
  3. "Apéndice D: Formatos de registro de entrada del editor TESTRAN" (PDF) . Sistema operativo IBM System/360 - TESTRAN - Manual de lógica del programa - Número de programa 3605-PT-516 (PDF) . TNL GN26-8016. IBM . 1 de abril de 1971. págs. 119–120 . GY28-6611-0 . Consultado el 11 de julio de 2024 . 
  4. "Apéndice. Convenciones de entrada y formatos de registro" (PDF) . MVS/370 - Linkage Editor Logic - Data Facility Product 5665-295 - Release 1.0 (PDF) (Primera ed.). IBM . Abril de 1983. págs. 195–206 . LY26-3921-0 . Consultado el 11 de julio de 2024 .  
  5. LY26-3921-0 , pág. 195, Figura 69. Registro de entrada SYM (Imagen de tarjeta) .
  6. LY26-3921-0 , pág. 199, Figura 76. Registro SYM (Módulo de carga) .
  7. "Apéndice C. Salida de archivos de datos asociados" (PDF) . High Level Assembler for z/OS & z/VM & z/VSE - Programmer's Guide - Version 1 Release 6 (PDF) . IBM . 2015. pp. 227–275 . SC26-4941-07 . Consultado el 11 de julio de 2024 . 
  8. "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 del original el 19 de diciembre de 2019. Consultado el 11 de enero de 2020 .
  • http://referencesource.microsoft.com/ Servidor de referencia de Microsoft
  • https://firefox-source-docs.mozilla.org/taskcluster/using-the-mozilla-source-server.html Servidor de código fuente de Mozilla
  • http://www.symbolsource.org/ Bibliotecas .NET en SymbolSource
Obtenido de " https://en.wikipedia.org/w/index.php?title=Debug_symbol&oldid=1295258397 "