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 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 intentar investigar y reparar una aplicación que falla o cualquier otro error. [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 está definido. Otra información incluye el tipo de símbolo (entero, punto flotante, función, excepción, etc.), el alcance ( ámbito de bloque o ámbito global ), el tamaño y, en el caso de las clases, el nombre de la clase y los métodos y miembros que contiene.

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 de objeto, archivo ejecutable o biblioteca compartida, o puede estar en un archivo separado.

En algunos sistemas, por ejemplo, z/OS , la información de depuración contiene más que sólo la tabla de símbolos, por ejemplo, el ADATA analizado en § OS/390 et al contiene el 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 llegar a ser bastante grandes, a menudo varias veces el tamaño del archivo despojado. [2] Para evitar este tamaño adicional, la mayoría de las distribuciones de sistemas operativos envían binarios despojados, es decir, de los cuales 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 normalmente no se envían 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 formato más reciente DWARF , para el que existen especificaciones formales, lo ha reemplazado 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 el GNU Debugger (GDB), pueda acceder a estos símbolos y mostrarlos.

IBM

Los compiladores para la línea de mainframes de IBM que descienden 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 de objeto. De manera similar, los editores de enlaces y enlazadores 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 utilizar las definiciones de símbolos incrustadas.

Archivos de depuración externos

Sistema operativo/390y otros

El ensamblador de alto nivel de IBM (HLASM) y otros compiladores que se ejecutan en, por ejemplo, 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 programas (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 PDB que distribuye Microsoft incluyen solo 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 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 para humanos. [8]

Historia

Los depuradores simbólicos existen desde la era de los mainframes , casi desde la primera introducción de pantallas de ordenador 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 y también estaban disponibles para programas en lenguaje ensamblador . Para el IBM/360 , estos generaban código objeto (a petición) que incluía "tarjetas SYM". El cargador de programas solía ignorarlas, 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.

Véase también

Referencias

  1. ^ "Depuración con símbolos". Centro de desarrollo de Windows . Microsoft . Archivado desde el original el 2020-01-11 . Consultado el 2020-01-11 .
  2. ^ "¿Para qué sirven los símbolos?". TechNet . Microsoft . 2008-07-15. Archivado desde el original el 2014-12-26 . Consultado el 2015-01-04 .
  3. ^ "Apéndice D: Formatos de registro de entrada del editor TESTRAN" (PDF) . Sistema operativo IBM System/360 - TESTRAN - Manual de lógica de programas - 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) (First 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 archivo de datos asociado" (PDF) . Ensamblador de alto nivel para z/OS, 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 los 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 2019-12-19 . Consultado el 2020-01-11 .

Enlaces externos