Compartilhar via


IDiaSymbol

Descreve as propriedades de uma instância de símbolo.

Syntax

IDiaSymbol : IUnknown

Métodos em ordem alfabética

A tabela a seguir mostra os métodos de IDiaSymbol.

Observação

Os símbolos retornarão dados significativos apenas para alguns desses métodos, dependendo do tipo de símbolo. Se um método retornar S_OK, então ele retornará dados significativos.

Método Descrição
IDiaSymbol::findChildren Recupera todos os filhos do símbolo.
IDiaSymbol::findChildrenEx Recupera os filhos do símbolo. Esse método é a versão estendida de IDiaSymbol::findChildren.
IDiaSymbol::findChildrenExByAddr Recupera os filhos do símbolo que são válidos em um endereço especificado.
IDiaSymbol::findChildrenExByRVA Recupera os filhos do símbolo que são válidos em um endereço virtual relativo (RVA) especificado.
IDiaSymbol::findChildrenExByVA Recupera os filhos do símbolo que são válidos em um endereço virtual especificado.
IDiaSymbol::findInlineFramesByAddr Recupera uma enumeração que permite que um cliente itere por todos os quadros embutidos em um determinado endereço.
IDiaSymbol::findInlineFramesByRVA Recupera uma enumeração que permite que um cliente itere por todos os quadros embutidos em um determinado endereço virtual relativo (RVA).
IDiaSymbol::findInlineFramesByVA Recupera uma enumeração que permite que um cliente itere por todos os quadros embutidos em um determinado endereço virtual (EV).
IDiaSymbol::findInlineeLines Recupera uma enumeração que permite que um cliente itere através das informações de número de linha de todas as funções embutidas, direta ou indiretamente, neste símbolo.
IDiaSymbol::findInlineeLinesByAddr Recupera uma enumeração que permite que um cliente itere por meio das informações de número de linha de todas as funções embutidas, direta ou indiretamente, nesse símbolo no intervalo de endereços especificado.
IDiaSymbol::findInlineeLinesByRVA Recupera uma enumeração que permite que um cliente itere por meio das informações de número de linha de todas as funções embutidas, direta ou indiretamente, nesse símbolo no endereço virtual relativo (RVA) especificado.
IDiaSymbol::findInlineeLinesByVA Recupera uma enumeração que permite que um cliente itere por meio das informações de número de linha de todas as funções embutidas, direta ou indiretamente, nesse símbolo no endereço virtual (EV) especificado.
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag Dado um valor de marca correspondente, este método retorna uma enumeração de símbolos contidos nesta função de stub em um endereço virtual relativo especificado.
IDiaSymbol::findSymbolsForAcceleratorPointerTag Retorna o número de marcas de ponteiro do acelerador em uma função de stub C++ AMP.
IDiaSymbol::get_acceleratorPointerTags Retorna todos os valores de marca de ponteiro de acelerador que correspondem a uma função stub do acelerador de C++ AMP*.
IDiaSymbol::get_access Recupera o modificador de acesso de um membro de classe.
IDiaSymbol::get_addressOffset Recupera a parte de deslocamento de um local de endereço.
IDiaSymbol::get_addressSection Recupera a parte da seção de um local do endereço.
IDiaSymbol::get_addressTaken Recupera um sinalizador que indica se outro símbolo faz referência a esse endereço.
IDiaSymbol::get_age Recupera o valor de idade de um banco de dados do programa.
IDiaSymbol::get_arrayIndexType Recupera o identificador de símbolo do tipo de índice de matriz.
IDiaSymbol::get_arrayIndexTypeId Recupera o identificador do tipo de índice da matriz do símbolo.
IDiaSymbol::get_backEndMajor Recupera o número de versão principal do back-end.
IDiaSymbol::get_backEndMinor Recupera o número de versão menor do back-end.
IDiaSymbol::get_backEndBuild Recupera o número de build do back-end.
IDiaSymbol::get_baseDataOffset Recupera o deslocamento de dados base.
IDiaSymbol::get_baseDataSlot Recupera o slot de dados base.
IDiaSymbol::get_baseSymbol Recupera o símbolo do qual o ponteiro se baseia.
IDiaSymbol::get_baseSymbolId Recupera a ID do símbolo do qual o ponteiro se baseia.
IDiaSymbol::get_baseType Recupera a marca de tipo de um tipo simples.
IDiaSymbol::get_bitPosition Recupera a posição de bit de um local.
IDiaSymbol::get_builtInKind Recupera um tipo integrado do tipo HLSL.
IDiaSymbol::get_callingConvention Retorna um indicador de uma convenção de chamada do método.
IDiaSymbol::get_classParent Recupera uma referência ao pai da classe do símbolo.
IDiaSymbol::get_classParentId Recupera o identificador pai de classe do símbolo.
IDiaSymbol::get_code Recupera um sinalizador que indica se o símbolo se refere a um endereço de código.
IDiaSymbol::get_compilerGenerated Recupera um sinalizador que indica se o símbolo foi gerado pelo compilador.
IDiaSymbol::get_compilerName Recupera o nome do compilador usado para criar o Compiland.
IDiaSymbol::get_constructor Recupera um sinalizador que indica se o tipo de dados definido pelo usuário tem um construtor.
IDiaSymbol::get_container Recupera o símbolo contido desse símbolo.
IDiaSymbol::get_constType Recupera um sinalizador que indica se o tipo de dados definido pelo usuário é constante.
IDiaSymbol::get_count Recupera o número de itens em uma lista ou matriz.
IDiaSymbol::get_countLiveRanges Recupera o número de intervalos de endereços válidos associados ao símbolo local.
IDiaSymbol::get_customCallingConvention Recupera um sinalizador que indica se a função usa uma convenção de chamada personalizada.
IDiaSymbol::get_dataBytes Recupera os bytes de dados de um símbolo OEM.
IDiaSymbol::get_dataKind Recupera a classificação variável de um símbolo de dados.
IDiaSymbol::get_editAndContinueEnabled Recupera o sinalizador que descreve os recursos Editar e Continuar do programa ou unidade compilado.
IDiaSymbol::get_farReturn Recupera um sinalizador que indica se a função usa um retorno distante.
IDiaSymbol::get_frontEndMajor Recupera o número de versão principal do front-end.
IDiaSymbol::get_frontEndMinor Recupera o número de versão menor do front-end.
IDiaSymbol::get_frontEndBuild Recupera o número de build do front-end.
IDiaSymbol::get_function Recupera um sinalizador que indica se o símbolo público se refere a uma função.
IDiaSymbol::get_guid Recupera o GUID do símbolo.
IDiaSymbol::get_hasAlloca Recupera um sinalizador que indica se a função contém uma chamada para alloca.
IDiaSymbol::get_hasAssignmentOperator Recupera um sinalizador que indica se o tipo de dados definido pelo usuário tem operadores de atribuição definidos.
IDiaSymbol::get_hasCastOperator Recupera um sinalizador que indica se o tipo de dados definido pelo usuário tem operadores de conversão definidos.
IDiaSymbol::get_hasDebugInfo Recupera um sinalizador que indica se o compiland contém informações de depuração.
IDiaSymbol::get_hasEH Recupera um sinalizador que indica se a função tem um manipulador de exceção no estilo C++.
IDiaSymbol::get_hasEHa Recupera um sinalizador que indica se a função tem um manipulador de exceção assíncrono.
IDiaSymbol::get_hasInlAsm Recupera um sinalizador que indica se a função tem assembly embutido.
IDiaSymbol::get_hasLongJump Recupera um sinalizador que indica se a função contém um comando longjmp (parte do tratamento de exceção no estilo C).
IDiaSymbol::get_hasManagedCode Recupera um sinalizador que indica se o módulo contém código gerenciado.
IDiaSymbol::get_hasNestedTypes Recupera um sinalizador que indica se o tipo de dados definido pelo usuário tem definições do tipo aninhado.
IDiaSymbol::get_hasSecurityChecks Recupera um sinalizador que indica se a função ou o compiland tem verificações de segurança compiladas no (por meio da opção do compilador /GS (Verificação de Segurança do Buffer)).
IDiaSymbol::get_hasSEH Recupera um sinalizador que indica se a função tem Tratamento de Exceção Estruturado no estilo Win32.
IDiaSymbol::get_hasSetJump Recupera um sinalizador que indica se a função contém um comando setjmp.
IDiaSymbol::get_indirectVirtualBaseClass Recupera um sinalizador que indica se o tipo de dados definido pelo usuário é uma classe base virtual indireta.
IDiaSymbol::get_InlSpec Recupera um sinalizador que indica se a função foi marcada com o atributo embutido.
IDiaSymbol::get_interruptReturn Recupera um sinalizador que indica se a função tem um retorno a partir da instrução de interrupção.
IDiaSymbol::get_intro Recupera um sinalizador que indica se a função é a função virtual da classe base.
IDiaSymbol::get_isAcceleratorGroupSharedLocal Recupera um sinalizador que indica se o símbolo corresponde a uma variável local compartilhada por grupo no código compilado para um Acelerador de C++ AMP.
IDiaSymbol::get_isAcceleratorPointerTagLiveRange Recupera um sinalizador que indica se o símbolo corresponde ao símbolo de intervalo de definição para o componente de marca de uma variável de ponteiro no código compilado para um acelerador de C++ AMP. O símbolo de intervalo de definição é o local de uma variável para um intervalo de endereços.
IDiaSymbol::get_isAcceleratorStubFunction Indica se o símbolo corresponde a um símbolo de função de nível superior para um sombreador compilado para um acelerador que corresponde a uma chamada parallel_for_each.
IDiaSymbol::get_isAggregated Recupera um sinalizador que indica se os dados fazem parte de uma agregação de muitos símbolos.
IDiaSymbol::get_isCTypes Recupera um sinalizador que indica se o arquivo de símbolo contém tipos C.
IDiaSymbol::get_isCVTCIL Recupera um sinalizador que indica se o módulo foi convertido de uma Common Intermediate Language (CIL) para um código nativo.
IDiaSymbol::get_isDataAligned Recupera um sinalizador que indica se os elementos de um tipo de dados definido pelo usuário estão alinhados a um limite específico.
IDiaSymbol::get_isHLSLData Especifica se esse símbolo representa dados de Linguagem de Sombreador de Alto Nível (HLSL).
IDiaSymbol::get_isHotpatchable Recupera um sinalizador que indica se o módulo foi compilado com a opção do compilador /hotpatch (Criar Imagem Para Patch Instantâneo).
IDiaSymbol::get_isLTCG Recupera um sinalizador que indica se o compiland gerenciado foi vinculado ao LTCG do vinculador.
IDiaSymbol::get_isMatrixRowMajor Especifica se a matriz é a principal da linha.
IDiaSymbol::get_isMSILNetmodule Recupera um sinalizador que indica se o compiland gerenciado é um .netmodule (contendo apenas metadados).
IDiaSymbol::get_isMultipleInheritance Especifica se o ponteiro this aponta para um membro de dados com herança múltipla.
IDiaSymbol::get_isNaked Recupera um sinalizador que indica se a função tem o atributo naked.
IDiaSymbol::get_isOptimizedAway Especifica se a variável é otimizada.
IDiaSymbol::get_isPointerBasedOnSymbolValue Especifica se o ponteiro this é baseado em um valor de símbolo.
IDiaSymbol::get_isPointerToDataMember Especifica se esse símbolo é um ponteiro para um membro de dados.
IDiaSymbol::get_isPointerToMemberFunction Especifica se esse símbolo é um ponteiro para uma função de membro.
IDiaSymbol::get_isReturnValue Especifica se a variável carrega um valor retornado.
IDiaSymbol::get_isSdl Especifica se o módulo é compilado com a opção /SDL.
IDiaSymbol::get_isSingleInheritance Especifica se o ponteiro this aponta para um membro de dados com herança única.
IDiaSymbol::get_isSplitted Recupera um sinalizador que indica se os dados foram divididos em uma agregação de símbolos separados.
IDiaSymbol::get_isStatic Recupera um sinalizador que indica se uma função ou camada de conversão é estática.
IDiaSymbol::get_isStripped Recupera um sinalizador que indica se os símbolos privados foram removidos do arquivo de símbolo.
IDiaSymbol::get_isVirtualInheritance Especifica se o ponteiro this aponta para um membro de dados com herança virtual.
IDiaSymbol::get_language Recupera a linguagem de programação da origem.
IDiaSymbol::get_length Recupera o número de bytes de memória usado pelo objeto representado por esse símbolo.
IDiaSymbol::get_lexicalParent Recupera uma referência ao pai léxico do símbolo.
IDiaSymbol::get_lexicalParentId Recupera o identificador pai léxico do símbolo.
IDiaSymbol::get_libraryName Recupera o nome do arquivo da biblioteca ou do arquivo de objeto do qual o objeto foi carregado.
IDiaSymbol::get_liveRangeLength Retorna o comprimento do intervalo de endereços no qual o símbolo local é válido.
IDiaSymbol::get_liveRangeStartAddressSection Retorna a parte de seção do intervalo de endereços inicial no qual o símbolo local é válido.
IDiaSymbol::get_liveRangeStartAddressOffset Retorna a parte de deslocamento do intervalo de endereços inicial no qual o símbolo local é válido.
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress Retorna o início do intervalo de endereços no qual o símbolo local é válido.
IDiaSymbol::get_locationType Recupera o tipo de local de um símbolo de dados.
IDiaSymbol::get_lowerBound Recupera o limite inferior de uma dimensão de matriz FORTRAN.
IDiaSymbol::get_lowerBoundId Recupera o identificador de símbolo do limite inferior de uma dimensão de matriz FORTRAN.
IDiaSymbol::get_machineType Recupera o tipo da CPU de destino.
IDiaSymbol::get_managed Recupera um sinalizador que indica se o símbolo se refere a um código gerenciado.
IDiaSymbol::get_memorySpaceKind Recupera o tipo do espaço de memória.
IDiaSymbol::get_msil Recupera um sinalizador que indica se o símbolo se refere ao código de linguagem intermediária da Microsoft (MSIL).
IDiaSymbol::get_name Recupera o nome do símbolo.
IDiaSymbol::get_nested Recupera um sinalizador que indica se o tipo de dados definido pelo usuário está aninhado.
IDiaSymbol::get_noInline Recupera um sinalizador que indica se a função está marcada com o atributo noinline.
IDiaSymbol::get_noReturn Recupera um sinalizador que indica se a função foi declarada com o atributo noreturn.
IDiaSymbol::get_noStackOrdering Recupera um sinalizador que indica se nenhuma ordenação de empilhamento pode ser feita como parte da verificação do buffer de pilha.
IDiaSymbol::get_notReached Recupera um sinalizador que indica se a função ou o rótulo nunca é alcançado.
IDiaSymbol::get_numberOfAcceleratorPointerTags Retorna o número de marcas de ponteiro do acelerador em uma função de stub C++ AMP.
IDiaSymbol::get_numberOfModifiers Recupera o número de modificadores que são aplicados ao tipo original.
IDiaSymbol::get_numberOfRegisterIndices Recupera o número de índices de registro.
IDiaSymbol::get_numberOfRows Recupera o número de linhas na matriz.
IDiaSymbol::get_numberOfColumns Recupera o número de colunas na matriz.
IDiaSymbol::get_objectFileName Recupera o nome do arquivo de objeto.
IDiaSymbol::get_objectPointerType Recupera o tipo do ponteiro de objeto para um método de classe.
IDiaSymbol::get_oemId Recupera o valor oemId do símbolo.
IDiaSymbol::get_oemSymbolId Recupera o valor oemSymbolId do símbolo.
IDiaSymbol::get_offset Recupera o deslocamento do local do símbolo.
IDiaSymbol::get_optimizedCodeDebugInfo Recupera um sinalizador que indica se a função ou o rótulo contém código otimizado, bem como informações de depuração.
IDiaSymbol::get_overloadedOperator Recupera um sinalizador que indica se o tipo de dados definido pelo usuário possui operadores sobrecarregados.
IDiaSymbol::get_packed Recupera um sinalizador que indica se o tipo de dados definido pelo usuário está empacotado.
IDiaSymbol::get_platform Recupera o tipo de plataforma para o qual o programa ou compiland foi compilado.
IDiaSymbol::get_pure Recupera um sinalizador que indica se a função é virtual pura.
IDiaSymbol::get_rank Recupera a classificação de uma matriz multidimensional FORTRAN.
IDiaSymbol::get_reference Recupera um sinalizador que indica se um tipo de ponteiro é uma referência.
IDiaSymbol::get_registerId Recupera o designador de registro do local.
IDiaSymbol::get_registerType Recupera o tipo de registro.
IDiaSymbol::get_relativeVirtualAddress Recupera o RVA (endereço virtual relativo) do local.
IDiaSymbol::get_restrictedType Especifica se o ponteiro this é sinalizado como restrito.
IDiaSymbol::get_samplerSlot Recupera o slot do amostrador.
IDiaSymbol::get_scoped Recupera um sinalizador que indica se o tipo de dados definido pelo usuário aparece em um escopo lexical não global.
IDiaSymbol::get_signature Recupera o valor de assinatura do símbolo.
IDiaSymbol::get_sizeInUdt Recupera o tamanho de um membro de um tipo definido pelo usuário.
IDiaSymbol::get_slot Recupera o número de slot do local.
IDiaSymbol::get_sourceFileName Recupera o nome do arquivo do arquivo de origem.
IDiaSymbol::getSrcLineOnTypeDefn Recupera o arquivo de origem e o número de linha que indicam onde um tipo definido pelo usuário especificado está definido.
IDiaSymbol::get_stride Recupera o passo da matriz ou da matriz passo a passo.
IDiaSymbol::get_subType Recupera o subtipo.
IDiaSymbol::get_subTypeId Recupera a ID do subtipo.
IDiaSymbol::get_symbolsFileName Recupera o nome do arquivo do qual os símbolos foram carregados.
IDiaSymbol::get_symIndexId Recupera o identificador de símbolo exclusivo.
IDiaSymbol::get_symTag Recupera o classificador do tipo de símbolo.
IDiaSymbol::get_targetOffset Recupera a seção de deslocamento de um destino de conversão.
IDiaSymbol::get_targetRelativeVirtualAddress Recupera o endereço virtual relativo (RVA) de um destino de conversão.
IDiaSymbol::get_targetSection Recupera a seção de endereço de um destino de conversão.
IDiaSymbol::get_targetVirtualAddress Recupera o endereço virtual (EV) de um destino de conversão.
IDiaSymbol::get_textureSlot Recupera o slot de textura.
IDiaSymbol::get_thisAdjust Recupera o ajustador lógico this para o método.
IDiaSymbol::get_thunkOrdinal Recupera o tipo de conversão de uma função.
IDiaSymbol::get_timeStamp Recupera o carimbo de data/hora do arquivo executável subjacente.
IDiaSymbol::get_token Recupera o token de metadados de uma variável ou função gerenciada.
IDiaSymbol::get_type Recupera uma referência à assinatura da função.
IDiaSymbol::get_typeId Recupera o identificador de tipo do símbolo.
IDiaSymbol::get_types Recupera uma matriz de valores do tipo específico do compilador para esse símbolo.
IDiaSymbol::get_typeIds Recupera uma matriz de valores do identificador de tipo específico do compilador para esse símbolo.
IDiaSymbol::get_uavSlot Recupera o slot uav.
IDiaSymbol::get_udtKind Recupera a variedade de um tipo definido pelo usuário (UDT).
IDiaSymbol::get_unalignedType Recupera um sinalizador que indica se o tipo de dados definido pelo usuário está desalinhado.
IDiaSymbol::get_undecoratedName Recupera o nome não decorado para um C++ decorado ou vínculo, nome.
IDiaSymbol::get_undecoratedNameEx Extensão do método get_undecoratedName que recupera o nome não decorado com base no valor de um campo de extensão.
IDiaSymbol::get_unmodifiedTypeId Recupera a ID do tipo original (não modificado).
IDiaSymbol::get_upperBound Recupera o limite superior de uma dimensão de matriz FORTRAN.
IDiaSymbol::get_upperBoundId Recupera o identificador de símbolo do limite superior de uma dimensão de matriz FORTRAN.
IDiaSymbol::get_value Recupera o valor de uma constante.
IDiaSymbol::get_virtual Recupera um sinalizador que indica se a função é virtual.
IDiaSymbol::get_virtualAddress Recupera o endereço virtual (EV) do local.
IDiaSymbol::get_virtualBaseClass Recupera um sinalizador que indica se o tipo de dados definido pelo usuário é uma classe base virtual.
IDiaSymbol::get_virtualBaseDispIndex Recupera o índice para a tabela de deslocamento de base virtual.
IDiaSymbol::get_virtualBaseOffset Recupera o deslocamento na tabela de funções virtuais de uma função virtual.
IDiaSymbol::get_virtualBasePointerOffset Recupera o deslocamento do ponteiro base virtual.
IDiaSymbol::get_virtualBaseTableType Recupera o tipo de um ponteiro de tabela base virtual.
IDiaSymbol::get_virtualTableShape Recupera a interface de símbolo do tipo da tabela virtual para um tipo definido pelo usuário.
IDiaSymbol::get_virtualTableShapeId Recupera o identificador de forma de tabela virtual do símbolo.
IDiaSymbol::get_volatileType Recupera um sinalizador que indica se o tipo de dados definido pelo usuário é volátil.

Comentários

Observações para chamadores

Obtenha essa interface chamando um dos seguintes métodos:

Exemplo

Esse exemplo mostra como exibir as variáveis locais de uma função em um determinado endereço virtual relativo. Ele também mostra como os símbolos de diferentes tipos estão relacionados uns aos outros.

Observação

CDiaBSTR é uma classe que encapsula um BSTR e manipula automaticamente a liberação da cadeia de caracteres quando a instanciação sai do escopo.

void DumpLocalVars( DWORD rva, IDiaSession *pSession )
{
    CComPtr< IDiaSymbol > pBlock;
    if ( FAILED( psession->findSymbolByRVA( rva, SymTagBlock, &pBlock ) ) )
    {
        Fatal( "Failed to find symbols by RVA" );
    }
    CComPtr< IDiaSymbol > pscope;
    for ( ; pBlock != NULL; )
    {
        CComPtr< IDiaEnumSymbols > pEnum;
        // local data search
        if ( FAILED( pBlock->findChildren( SymTagNull, NULL, nsNone, &pEnum ) ) )
        {
            Fatal( "Local scope findChildren failed" );
        }
        CComPtr< IDiaSymbol > pSymbol;
        DWORD tag;
        DWORD celt;
        while ( pEnum != NULL &&
                SUCCEEDED( pEnum->Next( 1, &pSymbol, &celt ) ) &&
                celt == 1)
        {
            pSymbol->get_symTag( &tag );
            if ( tag == SymTagData )
            {
                CDiaBSTR name;
                DWORD    kind;
                pSymbol->get_name( &name );
                pSymbol->get_dataKind( &kind );
                if ( name != NULL )
                    wprintf_s( L"\t%s (%s)\n", name, szDataKinds[ kind ] );
            }
            else if ( tag == SymTagAnnotation )
            {
                CComPtr< IDiaEnumSymbols > pValues;
                // local data search
                wprintf_s( L"\tAnnotation:\n" );
                if ( FAILED( pSymbol->findChildren( SymTagNull, NULL, nsNone, &pValues ) ) )
                    Fatal( "Annotation findChildren failed" );
                pSymbol = NULL;
                while ( pValues != NULL &&
                        SUCCEEDED( pValues->Next( 1, &pSymbol, &celt ) ) &&
                        celt == 1 )
                {
                    CComVariant value;
                    if ( pSymbol->get_value( &value ) != S_OK )
                        Fatal( "No value for annotation data." );
                    wprintf_s( L"\t\t%ws\n", value.bstrVal );
                    pSymbol = NULL;
                }
            }
            pSymbol = NULL;
        }
        pBlock->get_symTag( &tag );
        if ( tag == SymTagFunction )    // stop when at function scope
            break;
        // move to lexical parent
        CComPtr< IDiaSymbol > pParent;
        if ( SUCCEEDED( pBlock->get_lexicalParent( &pParent ) )
            && pParent != NULL ) {
            pBlock = pParent;
        }
        else
        {
            Fatal( "Finding lexical parent failed." );
        }
    };
}

Requisitos

Header: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Confira também