| Entrada | Salida | Alias |
|---|---|---|
| ✔ | ✗ |
Descripción
DWARF analiza símbolos de depuración DWARF de un archivo ELF (ejecutable, biblioteca o archivo objeto).
Es similar a dwarfdump, pero mucho más rápido (cientos de MB/s) y admite SQL.
Produce una fila por cada Debug Information Entry (DIE) en la sección .debug_info
e incluye entradas “null” que la codificación DWARF utiliza para terminar listas de hijos en el árbol.
.debug_info consta de units, que corresponden a unidades de compilación:- Cada unit es un árbol de DIEs, con un DIE
compile_unitcomo raíz. - Cada DIE tiene una etiqueta y una lista de atributos.
- Cada atributo tiene un nombre y un valor (y también una forma, que especifica cómo se codifica el valor).
- funciones (tag =
subprogram) - clases/structs/enums (
class_type/structure_type/enumeration_type) - variables (
variable) - argumentos de función (
formal_parameter).
class_type puede contener DIEs subprogram que representan métodos de la clase.DWARF genera las siguientes columnas:
offset- posición del DIE en la sección.debug_infosize- número de bytes del DIE codificado (incluidos los atributos)tag- tipo del DIE; se omite el prefijo convencional “DW_TAG_”unit_name- nombre de la unidad de compilación que contiene este DIEunit_offset- posición de la unidad de compilación que contiene este DIE en la sección.debug_infoancestor_tags- array de etiquetas de los ancestros del DIE actual en el árbol, en orden del más interno al más externoancestor_offsets- offsets de los ancestros, en paralelo conancestor_tags- algunos atributos comunes duplicados del array de atributos por comodidad:
namelinkage_name- nombre completo calificado con name mangling; normalmente solo lo tienen las funciones (pero no todas)decl_file- nombre del archivo de código fuente donde se declaró esta entidaddecl_line- número de línea del código fuente donde se declaró esta entidad
- arrays paralelos que describen los atributos:
attr_name- nombre del atributo; se omite el prefijo convencional “DW_AT_”attr_form- cómo se codifica e interpreta el atributo; se omite el prefijo convencional DW_FORM_attr_int- valor entero del atributo; 0 si el atributo no tiene un valor numéricoattr_str- valor de cadena del atributo; vacío si el atributo no tiene un valor de cadena
Ejemplo de uso
DWARF puede utilizarse para encontrar las unidades de compilación que tienen el mayor número de definiciones de funciones (incluidas las instanciaciones de plantillas y las funciones de los archivos de cabecera incluidos):
Query
Response