Usando símbolos

Para obter uma visão geral dos símbolos, incluindo o uso de arquivos de símbolo e servidores de símbolos, consulte Símbolos.

Nomes e locais de símbolos

Para localizar o local de um símbolo com seu nome, use GetOffsetByName. Para obter detalhes sobre a sintaxe usada para especificar nomes de símbolo, consulte Sintaxe de símbolo e Correspondência de símbolos.

Se o nome exato de um símbolo não for conhecido ou vários símbolos tiverem o mesmo nome, StartSymbolMatch iniciará uma pesquisa por símbolos cujos nomes correspondem a um determinado padrão. Para obter detalhes sobre a sintaxe, consulte Sintaxe curinga de cadeia de caracteres.

Para localizar o nome de um símbolo dado seu local, use GetNameByOffset. Para localizar os nomes dos símbolos em um módulo próximo a um determinado local, use GetNearNamebyOffset.

Nota Sempre que possível, qualifique o símbolo com o nome do módulo , por exemplo, mymodule!main. Caso contrário, se o símbolo não existir (por exemplo, devido a um erro tipográfico), o mecanismo terá que carregar e pesquisar os símbolos para cada módulo; isso pode ser um processo lento, especialmente para depuração no modo kernel. Se o nome do símbolo tiver sido qualificado com um nome de módulo, o mecanismo só precisará pesquisar os símbolos desse módulo.

Um símbolo é identificado exclusivamente usando a estrutura DEBUG_MODULE_AND_ID. Essa estrutura é retornada pelos métodos GetSymbolEntriesByName e GetSymbolEntriesByOffset, que pesquisam símbolos com base em seu nome e local, respectivamente.

O método GetSymbolEntryInformation retorna uma descrição de um símbolo usando a estrutura DEBUG_SYMBOL_ENTRY .

Para localizar o deslocamento de um campo dentro de uma estrutura, use GetFieldOffset. Para localizar o nome de um campo dado seu índice dentro de uma estrutura, use GetFieldName. Para localizar o nome de uma constante de enumeração considerando seu valor, use GetConstantName.

O método GetSymbolInformation pode executar várias solicitações para obter informações sobre símbolos.

Opções de símbolo

Várias opções controlam como os símbolos são carregados e descarregados. Para obter uma descrição dessas opções, consulte Definindo opções de símbolo.

As opções de símbolo podem ser ativadas usando AddSymbolOptions e desativadas usando RemoveSymbolOptions.

GetSymbolOptions retorna as opções de símbolo atuais. Para definir todas as opções de símbolo de uma só vez, use SetSymbolOptions.

Recarregando símbolos

Depois de carregar arquivos de símbolo, o mecanismo armazena as informações de símbolo em um cache interno. Para liberar esse cache, use Recarregar. Esses símbolos precisarão ser carregados novamente agora ou posteriormente.

Símbolos sintéticos

Símbolos sintéticos são uma maneira de rotular um endereço arbitrário para facilitar a referência. Símbolos sintéticos podem ser criados em qualquer módulo existente. O método AddSyntheticSymbol cria um novo símbolo sintético. Símbolos sintéticos podem ser removidos usando RemoveSyntheticSymbol. Recarregar os símbolos do módulo exclui todos os símbolos sintéticos associados a esse módulo.

Caminho do símbolo

Para adicionar um diretório ou servidor de símbolos ao caminho do símbolo, use o método AppendSymbolPath. O caminho do símbolo inteiro é retornado por GetSymbolPath e pode ser alterado usando SetSymbolPath.