Símbolo de depuração - Debug symbol

Um símbolo de depuração é um tipo especial de símbolo que anexa informações adicionais à tabela de símbolos de um arquivo de objeto , como uma biblioteca compartilhada ou um executável . Essas informações permitem que um depurador simbólico obtenha acesso às informações do código-fonte do binário, como nomes de identificadores, incluindo variáveis e rotinas.

As informações simbólicas podem ser compiladas junto com o arquivo binário do módulo , ou distribuídas em um arquivo separado, ou simplesmente descartadas durante a compilação e / ou vinculação .

Essas informações podem ser úteis ao tentar investigar e corrigir um aplicativo com falha ou qualquer outra falha.

Símbolos embutidos

Os símbolos de depuração normalmente incluem não apenas o nome de uma função ou variável global, mas também o nome do arquivo de código-fonte no qual o símbolo ocorre, bem como o número da linha na qual ele é definido. Outras informações incluem o tipo de símbolo (inteiro, flutuante, função, exceção, etc.), o escopo (escopo do bloco ou escopo global ), o tamanho e, para classes, o nome da classe e os métodos e membros iniciar. Todas essas informações adicionais podem ocupar um pouco de espaço, especialmente os nomes dos arquivos e números de linha. Assim, binários com símbolos de depuração podem se tornar muito grandes, muitas vezes várias vezes o tamanho do arquivo removido. Para evitar esse tamanho extra, a maioria das distribuições de sistema operacional fornece binários que são removidos , ou seja, dos quais todos os símbolos de depuração foram removidos. Isso é feito, por exemplo, com o comando strip no unix.

Alguns compiladores produzirão as informações de depuração simbólica em um arquivo separado, em vez de colocá-lo junto com o binário.

SysV ABI

A interface binária do aplicativo SysV inclui uma especificação para o formato dos símbolos de depuração. Isso permite que qualquer compilador ou montador compatível crie símbolos de depuração em um formato padronizado e que qualquer depurador, como GDB , obtenha acesso e exiba esses símbolos. Por exemplo, parte das informações de depuração importantes inclui a linha de código no arquivo de origem que define aquele símbolo (uma função ou variável global), bem como símbolos associados a quadros de exceção.

Símbolos de depuração da Microsoft

Os compiladores da Microsoft geram um arquivo denominado arquivo PDB contendo símbolos de depuração. Algumas empresas fornecem o PDB em seu CD / DVD para permitir a solução de problemas, e outras empresas (como a Microsoft e a Mozilla Corporation ) permitem o download de símbolos de depuração da Internet. O depurador WinDBG e o Visual Studio IDE podem ser configurados para baixar automaticamente símbolos de depuração para DLLs do Windows sob demanda. Os símbolos de depuração do PDB que a Microsoft distribui incluem apenas funções públicas, variáveis ​​globais e seus tipos de dados. A Mozilla Corporation tem infraestrutura semelhante, mas distribui informações completas de depuração.

Tanto a Microsoft quanto a Mozilla também oferecem o código-fonte (a Microsoft fornece certos componentes, como a maioria do .NET Framework , enquanto a Mozilla oferece o código-fonte completo) para tornar a depuração mais fácil.

maçã

Em plataformas Apple , os símbolos de depuração são opcionalmente emitidos durante o processo de construção como arquivo (s) dSYM. A Apple usa o termo "simbolizar" para se referir à substituição de endereços em arquivos de diagnóstico por valores legíveis por humanos.

História

Os depuradores simbólicos existem desde a era do mainframe , quase desde a primeira introdução de monitores de computador adequados para exibir as informações de depuração simbólicas (e até mesmo antes com despejos simbólicos no papel). Eles não estavam restritos a linguagens compiladas de alto nível e estavam disponíveis também para programas de linguagem Assembly . Para o IBM / 360 , eles produziram código-objeto (mediante solicitação) que incluía "cartões SYM". Eles eram geralmente ignorados pelo carregador do programa, mas eram úteis para um depurador simbólico, pois eram mantidos na mesma biblioteca do programa que o código lógico executável.

Veja também

Referências

Símbolo público e servidores de origem