| Entrada | Saída | Alias |
|---|---|---|
| ✔ | ✗ |
Descrição
DWARF analisa símbolos de depuração DWARF de um arquivo ELF (executável, biblioteca ou arquivo-objeto).
Ele é semelhante ao dwarfdump, mas muito mais rápido (centenas de MB/s) e com suporte a SQL.
Ele produz uma linha para cada Debug Information Entry (DIE) na seção .debug_info
e inclui entradas “null” que a codificação DWARF usa para encerrar listas de filhos na árvore.
.debug_info é composto por unidades, que correspondem a unidades de compilação:- Cada unidade é uma árvore de DIEs, com um DIE
compile_unitcomo raiz. - Cada DIE tem uma tag e uma lista de atributos.
- Cada atributo tem um nome e um valor (e também um form, que especifica como o valor é codificado).
- funções (tag =
subprogram) - classes/structs/enums (
class_type/structure_type/enumeration_type) - variáveis (
variable) - argumentos de função (
formal_parameter).
class_type pode conter DIEs subprogram que representam métodos da classe.DWARF gera as seguintes colunas:
offset- posição do DIE na seção.debug_infosize- número de bytes no DIE codificado (incluindo atributos)tag- tipo do DIE; o prefixo convencional “DW_TAG_” é omitidounit_name- nome da unidade de compilação que contém este DIEunit_offset- posição da unidade de compilação que contém este DIE na seção.debug_infoancestor_tags- array com as tags dos ancestrais do DIE atual na árvore, em ordem do mais interno para o mais externoancestor_offsets- offsets dos ancestrais, em paralelo aancestor_tags- alguns atributos comuns duplicados do array de atributos por conveniência:
namelinkage_name- nome totalmente qualificado com mangling; normalmente só as funções o têm (mas não todas)decl_file- nome do arquivo de código-fonte onde esta entidade foi declaradadecl_line- número da linha no código-fonte onde esta entidade foi declarada
- arrays paralelos que descrevem os atributos:
attr_name- nome do atributo; o prefixo convencional “DW_AT_” é omitidoattr_form- como o atributo é codificado e interpretado; o prefixo convencional “DW_FORM_” é omitidoattr_int- valor inteiro do atributo; 0 se o atributo não tiver um valor numéricoattr_str- valor de string do atributo; vazio se o atributo não tiver um valor de string
Exemplo de uso
DWARF pode ser usado para encontrar unidades de compilação com o maior número de definições de função (incluindo instanciações de template e funções de arquivos de cabeçalho incluídos):
Query
Response