| Entrée | Sortie | Alias |
|---|---|---|
| ✔ | ✗ |
Description
DWARF analyse les symboles de débogage DWARF d’un fichier ELF (exécutable, bibliothèque ou fichier objet).
Il s’apparente à dwarfdump, mais il est beaucoup plus rapide (des centaines de Mo/s) et prend en charge SQL.
Il produit une ligne pour chaque entrée d’information de débogage (DIE) dans la section .debug_info
et inclut des entrées « null » que l’encodage DWARF utilise pour marquer la fin des listes d’enfants dans l’arborescence.
.debug_info se compose d’unités, qui correspondent aux unités de compilation :- Chaque unité est une arborescence de DIE, avec un DIE
compile_unitcomme racine. - Chaque DIE possède un tag et une liste d’attributs.
- Chaque attribut possède un nom et une valeur (ainsi qu’une forme, qui indique comment la valeur est encodée).
- des fonctions (tag =
subprogram) - des classes/structs/enums (
class_type/structure_type/enumeration_type) - des variables (
variable) - des arguments de fonction (
formal_parameter).
class_type peut contenir des DIE subprogram représentant les méthodes de la classe.DWARF produit les colonnes suivantes :
offset- position du DIE dans la section.debug_infosize- nombre d’octets du DIE encodé (y compris les attributs)tag- type du DIE ; le préfixe conventionnel « DW_TAG_ » est omisunit_name- nom de l’unité de compilation contenant ce DIEunit_offset- position de l’unité de compilation contenant ce DIE dans la section.debug_infoancestor_tags- tableau des tags des ancêtres du DIE courant dans l’arborescence, dans l’ordre du plus proche au plus éloignéancestor_offsets- offsets des ancêtres, parallèles àancestor_tags- quelques attributs courants dupliqués à partir du tableau d’attributs par commodité :
namelinkage_name- nom complet qualifié manglé ; en général, seules les fonctions en ont un (mais pas toutes)decl_file- nom du fichier de code source dans lequel cette entité a été déclaréedecl_line- numéro de ligne dans le code source où cette entité a été déclarée
- tableaux parallèles décrivant les attributs :
attr_name- nom de l’attribut ; le préfixe conventionnel « DW_AT_ » est omisattr_form- manière dont l’attribut est encodé et interprété ; le préfixe conventionnel DW_FORM_ est omisattr_int- valeur entière de l’attribut ; 0 si l’attribut n’a pas de valeur numériqueattr_str- valeur textuelle de l’attribut ; vide si l’attribut n’a pas de valeur textuelle
Exemple d’utilisation
DWARF peut être utilisé pour trouver les unités de compilation qui comportent le plus de définitions de fonctions (y compris les instanciations de Template et les fonctions provenant des fichiers d’en-tête inclus) :
Query
Response