Símbolos públicos e símbolos privados

Quando você cria um driver ou outro programa, os símbolos do programa geralmente são armazenados em arquivos de símbolo, embora alguns compiladores mais antigos armazenem determinados símbolos no arquivo executável. Quando um depurador está analisando um programa, ele precisa acessar os símbolos do programa.

Normalmente, os arquivos de símbolo podem incluir qualquer um ou todos os seguintes símbolos:

  • Os nomes e endereços de todas as funções

  • Todas as definições de tipo de dados, estrutura e classe

  • Os nomes, tipos de dados e endereços de variáveis globais

  • Os nomes, tipos de dados, endereços e escopos de variáveis locais

  • Os números de linha no código-fonte que correspondem a cada instrução binária

Alguns desenvolvedores de programas podem se sentir desconfortáveis ao compartilhar todas essas informações com seus clientes. O BinPlace pode ser usado para reduzir a quantidade de símbolos em um arquivo de símbolo.

Alguns símbolos básicos, como nomes de função e variáveis globais, são necessários até mesmo para a depuração mais rudimentar. Eles são chamados de símbolos públicos. Símbolos como nomes de estrutura de dados, variáveis globais visíveis em apenas um arquivo de objeto, variáveis locais e informações de número de linha nem sempre são necessários para depuração, embora sejam úteis para uma sessão de depuração mais detalhada. Eles são chamados de símbolos privados.

Um arquivo de símbolo que contém símbolos públicos e privados é chamado de arquivo de símbolo completo. Um arquivo de símbolo que contém apenas símbolos públicos é chamado de arquivo de símbolo despojado.

O BinPlace pode criar um arquivo de símbolo despojado. Ele faz isso criando um novo arquivo de símbolo que contém apenas símbolos públicos; os símbolos privados são removidos ("despojados"). Quando as opções mais comuns do BinPlace são usadas (-a-x-s -n), os arquivos de símbolo despojados são colocados no diretório listado após a opção -s e os arquivos de símbolo completos são colocados no diretório listado após a opção -n .

Quando o BinPlace remove um arquivo de símbolo, as versões despojadas e completas do arquivo recebem assinaturas idênticas e outras informações de identificação. Isso permite que você use qualquer versão para depuração.

Nota O BinPlace removerá símbolos privados de um arquivo de símbolo quando o arquivo de símbolo estiver no mesmo diretório que o arquivo executável e você especificar o nome do arquivo executável (juntamente com as opções apropriadas) na linha de comando BinPlace. Você não deve especificar o nome do arquivo de símbolo em si . Isso resultará em BinPlace movendo o arquivo sem alterá-lo.

Se você precisar determinar se um arquivo de símbolo contém símbolos privados, poderá usar a ferramenta SymChk . O SymChk faz parte do pacote Ferramentas de Depuração para Windows. Consulte SymChk e Depuração do Windows para obter detalhes.

Se você estiver enviando seu driver para o Programa de Certificação de Hardware do Windows, poderá enviar arquivos de símbolo despojados se preferir não compartilhar seus símbolos privados com a Microsoft. Os arquivos de símbolo que foram removidos pelo BinPlace não expõem nenhuma parte da arquitetura do driver que normalmente seria considerada confidencial. Para obter mais informações, consulte o Programa de Certificação de Hardware do Windows.