DWARF és un format de dades de depuració estandarditzat àmpliament utilitzat. DWARF es va dissenyar juntament amb el format executable i enllaçable (ELF), tot i que és independent dels formats de fitxer d'objectes. El nom és un complement de fantasia medieval a "ELF" que no tenia cap significat oficial, tot i que el nom "Depuració amb formats de registre arbitraris" s'ha proposat des de llavors com a retroacrònim.
DWARF es va originar amb el compilador C i el depurador sdb a Unix System V Release 4 (SVR4).
Història La primera versió de DWARF va demostrar que utilitzava quantitats excessives d'emmagatzematge, i un successor incompatible, DWARF-2, la va substituir i va afegir diversos esquemes de codificació per reduir la mida de les dades. DWARF no va obtenir immediatament l'acceptació universal; per exemple, quan Sun Microsystems va adoptar ELF com a part del seu trasllat a Solaris, van optar per continuar utilitzant stabs, en una incrustació coneguda com "stabs-in-elf". Linux va seguir el mateix, i DWARF-2 no es va convertir en el predeterminat fins a finals dels anys noranta.
El grup de treball DWARF del Free Standards Group va llançar la versió 3 de DWARF el gener de 2006, afegint (entre altres coses) suport per a espais de noms C++, Fortran 90.dades i tècniques addicionals d'optimització del compilador.
El comitè DWARF va publicar la versió 4 de DWARF, que ofereix "compressió de dades millorada, millor descripció del codi optimitzat i suport per a noves característiques del llenguatge en C++", el 2010.
La versió 5 del format DWARF es va publicar el febrer de 2017. "Incorpora millores en molts àmbits: millor compressió de dades, separació de dades de depuració dels fitxers executables, millora de la descripció de macros i fitxers font, cerca més ràpida de símbols, millora de la depuració del codi optimitzat, així com nombroses millores en la funcionalitat i el rendiment".
Estructura DWARF utilitza una estructura de dades anomenada entrada d'informació de depuració (DIE) per representar cada variable, tipus, procediment, etc. Un DIE té una etiqueta (p. ex., , , ) i atributs (parells clau-valor). Un DIE pot tenir DIE (fills) imbricats, formant una estructura d'arbre. Un atribut DIE pot fer referència a un altre DIE en qualsevol lloc de l'arbre; per exemple, un DIE que representa una variable tindria unEntrada que apunta al DIE que descriu el tipus de variable.
Per estalviar espai, dues taules grans necessàries pels depuradors simbòlics es representen com a instruccions codificades per bytes per a màquines d'estats finits simples i de propòsit especial. La taula de números de línia, que mapeja les ubicacions del codi amb les ubicacions del codi font i viceversa, també especifica quines instruccions formen part dels pròlegs i epílegs de funcions. La taula d'informació del marc de trucada permet als depuradors localitzar marcs a la pila de trucades.
Referències
Categoria:Llenguatges de programació