Símbolos e arquivos de símbolo
Quando aplicativos, bibliotecas, drivers ou sistemas operacionais são vinculados, o vinculador que cria os arquivos .exe e .dll também cria vários arquivos adicionais conhecidos como arquivos de símbolo.
Os arquivos de símbolo contêm uma variedade de dados que não são realmente necessários ao executar os binários, mas que podem ser muito úteis no processo de depuração.
Normalmente, os arquivos de símbolo podem conter:
Variáveis globais
Variáveis locais
Nomes de função e os endereços de seus pontos de entrada
Registros FPO (omissão de ponteiro de quadro)
Números de linha de origem
Cada um desses itens é chamado, individualmente, de símbolo. Por exemplo, um único arquivo de símbolo Myprogram.pdb pode conter várias centenas de símbolos, incluindo variáveis globais e nomes de função e centenas de variáveis locais. Muitas vezes, as empresas de software lançam duas versões de cada arquivo de símbolo: um arquivo de símbolo completo contendo símbolos públicos e símbolos privados e um arquivo reduzido (despojado) que contém apenas símbolos públicos. Para obter detalhes, consulte Símbolos públicos e privados.
Ao depurar, você deve verificar se o depurador pode acessar os arquivos de símbolo associados ao destino que você está depurando. A depuração dinâmica e a depuração de arquivos de despejo de memória exigem símbolos. Você deve obter os símbolos adequados para o código que deseja depurar e carregar esses símbolos no depurador.
Símbolos do Windows
O Windows mantém seus símbolos em arquivos com a extensão .pdb.
O compilador e o vinculador controlam o formato do símbolo. O vinculador do Visual C++ coloca todos os símbolos em arquivos .pdb.
O sistema operacional Windows foi criado em duas versões. O build gratuito (ou build de varejo) tem binários relativamente pequenos e o build verificado (ou build de depuração) tem binários maiores, com mais símbolos de depuração no próprio código. Os builds verificados estavam disponíveis em versões mais antigas do Windows antes do Windows 10, versão 1803. Cada um desses builds tinha seus próprios arquivos de símbolo. Ao depurar um destino no Windows, você deve usar os arquivos de símbolo que correspondem ao build do Windows no destino.
A tabela a seguir lista vários dos diretórios que existem em uma árvore de símbolos padrão do Windows:
Diretório | Contém arquivos de símbolo para |
---|---|
ACM |
Arquivos do Gerenciador de Compactação de Áudio da Microsoft |
COM |
Arquivos executáveis (.com) |
CPL |
programas de Painel de Controle |
DLL |
Arquivos de biblioteca de link dinâmico (.dll) |
DRV |
Arquivos de driver (.drv) |
EXE |
Arquivos executáveis (.exe) |
SCR |
Arquivos de salvamento de tela |
SYS |
Arquivos de driver (.sys) |