Partilhar via


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ímbolos, embora alguns compiladores mais antigos armazenem certos 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ímbolos 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 em compartilhar todas essas informações com seus clientes. BinPlace pode ser usado para reduzir a quantidade de símbolos em um arquivo de símbolos.

Alguns símbolos básicos, como nomes de funções e variáveis globais, são necessários até mesmo para a depuração mais rudimentar. São os chamados 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 aprofundada. Estes são chamados símbolos privados.

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

BinPlace pode criar um arquivo de símbolo despojado. Ele faz isso criando um novo arquivo de símbolos que contém apenas símbolos públicos; os símbolos privados são removidos ("despojados"). Quando as opções BinPlace mais comuns são usadas (-a -x -s -n), os arquivos de símbolo removidos 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 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. Isto permite que se utilize qualquer versão para depuração.

Observação BinPlace irá remover símbolos privados de um arquivo de símbolo quando o arquivo de símbolo está 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ímbolos contém símbolos privados, você pode usar a ferramenta SymChk . O SymChk faz parte do pacote Debugging Tools for Windows. Consulte SymChk e Windows Debugging para obter detalhes.

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