stringtranslate.com

Símbolo de depuración

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 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 identificadores, incluidas variables y 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 vinculación .

Esta información puede ser útil al intentar investigar y reparar una aplicación que falla o cualquier otra falla. [1]

Información de depuración

Los símbolos de depuración normalmente 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 se define. Otra información incluye el tipo de símbolo (entero, flotante, función, excepción, etc.), el alcance ( alcance del bloque o alcance global ), el tamaño y, para las clases, el nombre de la clase y los métodos y miembros. en eso.

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 puede estar en un archivo separado.

La información de depuración puede ocupar bastante espacio, especialmente los nombres de archivos y los números de línea. Por lo tanto, los archivos 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 incluyen archivos binarios despojados, 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 . Si la información de depuración está en archivos separados, esos archivos generalmente no se incluyen con la distribución.

Símbolos incrustados

Sistemas tipo Unix

stabs fue uno de los primeros formatos para depurar símbolos en sistemas tipo Unix . El nuevo formato DWARF , para el cual existen especificaciones formales, lo ha suplantado en gran medida. La especificación permite que cualquier compilador o ensamblador compatible cree símbolos de depuración en un formato estandarizado, y que cualquier depurador, como GNU Debugger (GDB), obtenga acceso y muestre estos símbolos.

IBM

Los compiladores para la línea de mainframe IBM descendientes de 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 de enlaces tienen una opción de PRUEBA 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 utilizar las definiciones de símbolos incrustadas.

Archivos de depuración externos

OS/390et al

El IBM High Level Assembler (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 envían el 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 WinDbg y el IDE de Visual Studio se pueden configurar para descargar automáticamente símbolos de depuración para bibliotecas de vínculos dinámicos (DLL) de Windows a pedido. Los símbolos de depuración de PDB que distribuye Microsoft incluyen sólo funciones públicas, variables globales y sus tipos de datos. Mozilla Corporation tiene una infraestructura similar pero distribuye información de depuración completa.

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 "simbolicate" para referirse a la sustitución de direcciones en archivos de diagnóstico con valores legibles por humanos. [8]

Historia

Los depuradores simbólicos han existido desde la era del mainframe , casi desde la primera introducción de pantallas de computadora adecuadas para 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 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 mantenían en la misma biblioteca de programas que el código lógico ejecutable.

Ver también

Referencias

  1. ^ "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 .
  2. ^ "¿Para qué sirven los símbolos?". Technet . Microsoft . 2008-07-15. Archivado desde el original el 26 de diciembre de 2014 . Consultado el 4 de enero de 2015 .
  3. ^ "Apéndice D: Formatos de registros 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 . 1971-04-01. 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 - Lógica del editor de vínculos - Producto de instalación de datos 5665-295 - Versión 1.0 (PDF) (Primera edición). IBM . Abril de 1983. págs. 195-206. LY26-3921-0 . Consultado el 11 de julio de 2024 .
  5. ^ LY26-3921-0, pag. 195, Figura 69. Registro de entrada SYM (Imagen de tarjeta).
  6. ^ LY26-3921-0, pag. 199, Figura 76. Registro SYM (Módulo de carga).
  7. ^ "Apéndice C. Salida del archivo de datos asociado" (PDF) . Ensamblador de alto nivel para z/OS y ​​z/VM y z/VSE - Guía del programador - Versión 1 versión 6 (PDF) . IBM . 2015, págs. 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. 2018-01-08 [2009-01-29]. Nota Técnica TN2151. Archivado desde el original el 19 de diciembre de 2019 . Consultado el 11 de enero de 2020 .

enlaces externos