Símbolos

Um símbolo é uma unidade nomeada de dados ou código de um arquivo de origem que aparece em um módulo. As informações sobre símbolos podem incluir o nome, o tipo (se aplicável), o endereço ou o registro onde ele está armazenado e quaisquer símbolos pai ou filho. Exemplos de símbolos incluem variáveis (local e global), funções e qualquer ponto de entrada em um módulo.

As informações de símbolo são usadas pelo mecanismo para ajudar a interpretar dados e código no destino. Com essas informações, o mecanismo pode pesquisar símbolos por nome ou local na memória e fornecer uma descrição de um símbolo.

O mecanismo obtém suas informações sobre símbolos de arquivos de símbolo, que estão localizados no sistema de arquivos local ou carregados de um servidor de símbolos. Ao usar um servidor de símbolos, o mecanismo usará automaticamente a versão correta do arquivo de símbolo para corresponder ao módulo no destino. Os arquivos de símbolo podem ser carregados sempre que o módulo correspondente é carregado ou podem ser carregados conforme necessário.

Nota Muitas vezes, a otimização de compiladores não inclui informações precisas em arquivos de símbolo. Isso pode fazer com que o mecanismo interprete incorretamente o valor de algumas variáveis, pois o local ou o tempo de vida da variável pode ser descrito incorretamente, fazendo com que o mecanismo examine a parte errada da memória ou pense que um valor de variável está ativo quando está morto (ou vice-versa). Também é possível que um compilador de otimização altere a ordem de execução ou divida uma função em várias partes. Os melhores resultados geralmente são obtidos ao depurar código não otimizado.

Informações adicionais

Para obter detalhes sobre como usar símbolos, consulte Usando símbolos. Para obter uma visão geral do uso de arquivos de símbolo e servidores de símbolos, consulte Símbolos na seção Depuradores desta documentação.