O que é o formato de símbolos de depuração nativos do Linux?

6

A documentação do GCC diz que o -g option produz informações de depuração no formato nativo do sistema operacional (stabs, COFF, XCOFF ou DWARF 2) .

Então, qual é o formato de símbolos de depuração nativos do Linux? Como é chamado?

Atualização: Acabei de encontrar uma discussão sobre a lista de discussão do gcc com 15 anos de idade onde foi dito que o formato nativo naquele momento era stabs e então eles estavam considerando mudar para o DWARF2. Mas foi há 15 anos ... Alguma atualização? =)

    
por golem 31.07.2015 / 21:48

1 resposta

6

No Linux, o padrão é agora Dwarf 2 e / ou 4. Para ver isso, execute readelf --debug-dump=info em um binário contendo símbolos de depuração (ou símbolos separados); por exemplo, no Fedora, com glibc-debuginfo instalado, executando readelf --debug-dump=info /usr/lib/debug/bin/gencat.debug você terá algo como

 <1><ea>: Abbrev Number: 0
  Compilation Unit @ offset 0xeb:
   Length:        0x5c (32-bit)
   Version:       2
   Abbrev Offset: 0x52
   Pointer Size:  8
 <0><f6>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <f7>   DW_AT_stmt_list   : 0x83
    <fb>   DW_AT_ranges      : 0x0
    <ff>   DW_AT_name        : ../sysdeps/x86_64/crti.S
    <118>   DW_AT_comp_dir    : /usr/src/debug////////glibc-2.21/csu
    <13d>   DW_AT_producer    : GNU AS 2.25
    <149>   DW_AT_language    : 32769   (MIPS assembler)

Este é um conjunto de informações do Dwarf 2 (consulte o cabeçalho Version: para informações sobre a versão; o mesmo binário inclui as seções Dwarf 2 e Dwarf 4).

    
por 01.08.2015 / 09:31