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)