Partilhar via


SDK auxiliares para depuração

Essas funções e as declarações são funções de auxiliar global para a implementação de mecanismos de depuração, avaliadores de expressão e provedores de símbolo em C++.

Dica

Não há nenhum gerenciadas versões dessas funções e declarações neste momento.

Visão Geral

A fim de mecanismos de depuração, avaliadores de expressão e provedores de símbolo a ser usado por Visual Studio, eles devem ser registrados. Isso é feito definindo subchaves e entradas, também conhecidas como "métricas de configuração". As seguintes funções globais são criadas para facilitar o processo de atualização essas métricas. Consulte a seção sobre os locais do registro para descobrir o layout de cada subchave do registro que é atualizado por essas funções.

Funções de métrica geral

Essas são funções gerais usadas pelos mecanismos de depuração. Especializado de funções para avaliadores de expressão e provedores de símbolo são detalhados posteriormente.

Método GetMetric

Recupera um valor de métrica do registro.

HRESULT GetMetric(
   LPCWSTR pszMachine,
   LPCWSTR pszType,
   REFGUID guidSection,
   LPCWSTR pszMetric,
   DWORD * pdwValue,
   LPCWSTR pszAltRoot
);

Parâmetro

Descrição

pszMachine

[in] Nome de uma máquina remota possivelmente cujo registro será gravado (NULL significa que a máquina local).

pszType

[in] Um dos tipos de métricos.

guidSection

[in] GUID de um mecanismo específico, avaliador, exceção etc. Especifica uma subseção de um tipo de métrica para um elemento específico.

pszMetric

[in] A métrica seja obtido. Isso corresponde a um nome de valor específico.

pdwValue

[in] O local de armazenamento do valor da métrica. Existem vários tipos de GetMetric que pode retornar um DWORD (como no exemplo), um BSTR, um GUID ou uma matriz de GUIDs.

pszAltRoot

[in] Uma raiz alternativa do registro para usar. Definido como NULL para usar o padrão.

Método SetMetric

Define o valor de métrica especificado no registro.

HRESULT SetMetric(
         LPCWSTR pszType,
         REFGUID guidSection,
         LPCWSTR pszMetric,
   const DWORD   dwValue,
         bool    fUserSpecific,
         LPCWSTR pszAltRoot
);

Parâmetro

Descrição

pszType

[in] Um dos tipos de métricos.

guidSection

[in] GUID de um mecanismo específico, avaliador, exceção etc. Especifica uma subseção de um tipo de métrica para um elemento específico.

pszMetric

[in] A métrica seja obtido. Isso corresponde a um nome de valor específico.

dwValue

[in] O local de armazenamento do valor a métrica. Existem vários tipos de SetMetric que pode armazenar um DWORD (no exemplo), um BSTR, um GUID ou uma matriz de GUIDs.

fUserSpecific

[in] TRUE se a métrica é específica do usuário e ele deve ser escrito hive do usuário em vez de na seção de máquina local.

pszAltRoot

[in] Uma raiz alternativa do registro para usar. Definido como NULL para usar o padrão.

Método RemoveMetric

Remove a métrica especificada do registro.

HRESULT RemoveMetric(
   LPCWSTR pszType,
   REFGUID guidSection,
   LPCWSTR pszMetric,
   LPCWSTR pszAltRoot
);

Parâmetro

Descrição

pszType

[in] Um dos tipos de métricos.

guidSection

[in] GUID de um mecanismo específico, avaliador, exceção etc. Especifica uma subseção de um tipo de métrica para um elemento específico.

pszMetric

[in] A métrica a ser removido. Isso corresponde a um nome de valor específico.

pszAltRoot

[in] Uma raiz alternativa do registro para usar. Definido como NULL para usar o padrão.

Método EnumMetricSections

Enumera as métricas diversas seções do registro.

HRESULT EnumMetricSections(
   LPCWSTR pszMachine,
   LPCWSTR pszType,
   GUID *  rgguidSections,
   DWORD * pdwSize,
   LPCWSTR pszAltRoot
);

Parâmetro

Descrição

pszMachine

[in] Nome de uma máquina remota possivelmente cujo registro será gravado (NULL significa que a máquina local).

pszType

[in] Um dos tipos de métricos.

rgguidSections

[in, out] Pré-distribuídos matriz de GUIDs devem ser preenchidas.

pdwSize

[in] O número máximo de GUIDs podem ser armazenados na rgguidSections array.

pszAltRoot

[in] Uma raiz alternativa do registro para usar. Definido como NULL para usar o padrão.

Funções de avaliador de expressão

Função

Descrição

GetEEMetric

Recupera um valor de métrica do registro.

SetEEMetric

Define o valor de métrica especificado no registro.

RemoveEEMetric

Remove a métrica especificada do registro.

GetEEMetricFile

Obtém um nome de arquivo da métrica especificada e o carrega, retornando o conteúdo do arquivo como uma seqüência de caracteres.

Funções de exceção

Função

Descrição

GetExceptionMetric

Recupera um valor de métrica do registro.

SetExceptionMetric

Define o valor de métrica especificado no registro.

RemoveExceptionMetric

Remove a métrica especificada do registro.

RemoveAllExceptionMetrics

Remove todas as métricas de exceção do registro.

Funções de provedor de símbolo

Função

Descrição

GetSPMetric

Recupera um valor de métrica do registro.

SetSPMetric

Define o valor de métrica especificado no registro.

RemoveSPMetric

Remove a métrica especificada do registro.

Funções de enumeração

Função

Descrição

EnumMetricSections

Enumera todas as métricas para um tipo de métrica especificado.

EnumDebugEngine

Enumera os mecanismos de depuração registrado.

EnumEEs

Enumera os avaliadores de expressão registrados.

EnumExceptionMetrics

Enumera todas as métricas de exceção.

Definições de métricas

Essas definições podem ser usadas para nomes predefinidos de métricos. Os nomes correspondem aos nomes de valor e várias chaves de registro e são definidos como seqüências de caracteres largos: por exemplo, extern LPCWSTR metrictypeEngine.

Tipos predefinidos de métricos

Descrição: A chave base para....

metrictypeEngine

Todas as métricas do mecanismo de depuração.

metrictypePortSupplier

Todas as avaliações do fornecedor de porta.

metrictypeException

Todas as métricas de exceção.

metricttypeEEExtension

Todas as extensões do avaliador de expressão.

Propriedades do mecanismo de depuração.

Descrição

metricAddressBP

Defina como diferente de zero para indicar o suporte para pontos de interrupção de endereço.

metricAlwaysLoadLocal

Defina como diferente de zero para sempre carregue o mecanismo de depuração localmente.

metricLoadInDebuggeeSession

NÃO USADO

metricLoadedByDebuggee

Defina como diferente de zero para indicar que o mecanismo de depuração sempre será carregado com ou pelo programa que está sendo depurado.

metricAttach

Defina como diferente de zero para indicar o suporte para o anexo a programas existentes.

metricCallStackBP

Defina como diferente de zero para indicar o suporte para pontos de interrupção de pilha de chamada.

metricConditionalBP

Defina como diferente de zero para indicar o suporte para a configuração de pontos de interrupção condicionais.

metricDataBP

Defina como diferente de zero para indicar o suporte para a configuração de pontos de interrupção em alterações nos dados.

metricDisassembly

Defina como diferente de zero para indicar o suporte para a produção de uma listagem de desmontagem.

metricDumpWriting

Defina como diferente de zero para indicar o suporte para escrita (o despejo de memória para um dispositivo de saída) de despejo.

metricENC

Defina como diferente de zero para indicar o suporte para Edit and Continue.

Dica

Um mecanismo de depuração personalizada nunca deve defini-lo ou sempre deve defini-la como 0.

metricExceptions

Defina como diferente de zero para indicar o suporte para exceções.

metricFunctionBP

Defina como diferente de zero para indicar o suporte para pontos de interrupção (breakpoints falhar quando é chamado de um determinado nome de função) nomeados.

metricHitCountBP

Defina como diferente de zero para indicar o suporte para a configuração de pontos de interrupção de "ponto de acerto" (pontos de interrupção que são acionados somente depois que está sendo atingido um determinado número de vezes).

metricJITDebug

Defina como diferente de zero para indicar o suporte para depuração de just-in-time (o depurador é iniciado quando ocorre uma exceção em um processo em execução).

metricMemory

NÃO USADO

metricPortSupplier

Defina o CLSID do fornecedor porta se um for implementado.

metricRegisters

NÃO USADO

metricSetNextStatement

Defina como diferente de zero para indicar o suporte para definir a próxima instrução (que ignora a execução de instruções intermediárias).

metricSuspendThread

Defina como diferente de zero para indicar o suporte para suspender a execução do thread.

metricWarnIfNoSymbols

Defina como diferente de zero para indicar que o usuário será notificado se não houver nenhum símbolo.

metricProgramProvider

Defina o CLSID do provedor do programa.

metricAlwaysLoadProgramProviderLocal

Defina como diferente de zero para indicar que o provedor de programa deve ser sempre carregado localmente.

metricEngineCanWatchProcess

Defina como diferente de zero para indicar que o mecanismo de depuração irá observar para processar eventos em vez do provedor do programa.

metricRemoteDebugging

Defina como diferente de zero para indicar o suporte para depuração remota.

metricEncUseNativeBuilder

Defina como diferente de zero para indicar que o Edit and Continue Manager devem usar encbuild.dll do mecanismo de depuração para construir para editar e continuar.

Dica

Um mecanismo de depuração personalizada nunca deve defini-lo ou sempre deve defini-la como 0.

metricLoadUnderWOW64

Configure essa opção como diferente de zero para indicar que o mecanismo de depuração deve ser carregado do processo de depuração com WOW quando estiver depurando um processo de 64 bits; Caso contrário, o mecanismo de depuração será carregado no processo de Visual Studio (que está sendo executado no WOW64).

metricLoadProgramProviderUnderWOW64

Configure essa opção como diferente de zero para indicar que o provedor de programa deve ser carregado do processo de depuração quando estiver depurando um processo de 64 bits com WOW; Caso contrário, ele será carregado no processo de Visual Studio.

metricStopOnExceptionCrossingManagedBoundary

Defina como diferente de zero para indicar que o processo deve parar se uma exceção não tratada será lançada através de limites de código gerenciado /.

metricAutoSelectPriority

Defina uma prioridade para a seleção automática do mecanismo de depuração (valores igual a maior prioridade mais alta).

metricAutoSelectIncompatibleList

Chave do registro que contém entradas que especificam os GUIDs de mecanismos de depuração seja ignorado na seleção automática. Essas entradas são um número (0, 1, 2 e assim por diante) com um GUID, expresso como uma seqüência de caracteres.

metricIncompatibleList

Chave do registro que contém entradas que especificam os GUIDs para mecanismos de depuração que são incompatíveis com esse mecanismo de depuração.

metricDisableJITOptimization

Defina como diferente de zero para indicar que as otimizações de just-in-time (para código gerenciado) devem ser desativadas durante a depuração.

Propriedades do avaliador de expressões

Descrição

metricEngine

Isso mantém o número de mecanismos de depuração que suportam o avaliador da expressão especificada.

metricPreloadModules

Defina como diferente de zero para indicar que os módulos devem ser pré-carregados quando um avaliador de expressão é iniciado contra um programa.

metricThisObjectName

Defina o nome do objeto "this".

Propriedades de extensão do avaliador de expressão

Descrição

metricExtensionDll

Nome da dll que oferece suporte a essa extensão.

metricExtensionRegistersSupported

Lista de registros com suporte.

metricExtensionRegistersEntryPoint

Ponto de entrada para acessar registradores.

metricExtensionTypesSupported

Lista de tipos com suporte.

metricExtensionTypesEntryPoint

Ponto de entrada para acessar tipos.

Propriedades do fornecedor de porta

Descrição

metricPortPickerCLSID

O CLSID do seletor de porta (uma caixa de diálogo o usuário pode usar para selecionar portas e adicionar portas para depuração).

metricDisallowUserEnteredPorts

Diferente de zero se as portas inserido pelo usuário não podem ser adicionadas como o fornecedor de porta (Isso torna a caixa de diálogo de seleção de porta essencialmente somente leitura).

metricPidBase

A identificação de processo base usada pelo fornecedor porta ao alocar os IDs de processo.

Tipos predefinidos de armazenamento de SP

Descrição

storetypeFile

Os símbolos são armazenados em um arquivo separado.

storetypeMetadata

Os símbolos são armazenados como metadados em um assembly.

Propriedades variadas

Descrição

metricShowNonUserCode

Defina como diferente de zero para mostrar o código de nonuser.

metricJustMyCodeStepping

Defina como diferente de zero para indicar que a revisão pode ocorrer somente no código do usuário.

metricCLSID

CLSID para um objeto de um tipo específico de métrico.

metricName

Nome amigável para um objeto de um tipo específico de métrico.

metricLanguage

Nome do idioma.

Locais do registro

As métricas são ler e gravadas no registro, especificamente na VisualStudio subchave.

Dica

Na maioria das vezes, as métricas serão gravadas na chave HKEY_LOCAL_MACHINE.No entanto, às vezes, HKEY_CURRENT_USER será a chave de destino.Dbgmetric.lib lida com ambas as chaves.Ao obter uma métrica, ele procura HKEY_CURRENT_USER primeiro, depois em seguida HKEY_LOCAL_MACHINE.Quando ele está definindo uma métrica, um parâmetro especifica qual chave de nível superior para usar.

[chave]\

  Software\

    Microsoft\

      VisualStudio\

        [root versão]\

          [root métrica]\

            [tipo de métrica]\

              [métrica] = [valor de métrica]

              [métrica] = [valor de métrica]

              [métrica] = [valor de métrica]

Espaço reservado

Descrição

[chave do Registro]

HKEY_CURRENT_USER ou HKEY_LOCAL_MACHINE.

[root versão]

A versão do Visual Studio (por exemplo, 7.0, 7.1, ou 8.0). No entanto, esta raiz também pode ser modificada usando o /rootsuffix alternar para devenv.exe. Para VSIP, esse modificador é normalmente Exp, portanto, a raiz da versão seria, por exemplo, 8.0Exp.

[root métrica]

Pode ser uma AD7Metrics ou AD7Metrics(Debug), dependendo se a versão de depuração do dbgmetric.lib é usada.

Dica

Se o dbgmetric.lib for usado, ou não essa convenção de nomenclatura deverão ser seguida se você tiver as diferenças entre o debug e release versões que deverá ser refletidas no registro.

[tipo de métrica]

O tipo de métrica a ser gravado: Engine, ExpressionEvaluator, SymbolProvider, etc. Esses são definidos como no dbgmetric.h como metricTypeXXXX, onde XXXX é o nome de tipo específico.

[métrica]

O nome de uma entrada a ser atribuído um valor para definir a métrica. A organização real das métricas depende do tipo de métrica.

[valor de métrica]

O valor atribuído à métrica. O tipo que o valor deve ter (string), número, etc. depende a métrica.

Dica

Todos os GUIDs são armazenados no formato de {GUID}.Por exemplo, {123D150B-FA18-461C-B218-45B3E4589F9B}.

Mecanismos de depuração.

Veja a seguir, a organização das métricas de mecanismos de depuração no registro. Engineé o nome do tipo de métrica para um mecanismo de depuração e corresponde a [tipo de métrica] na subárvore do registro acima.

Engine\

  [guid do motor]\

    CLSID= [guid de classe]

    [métrica] = [valor de métrica]

    [métrica] = [valor de métrica]

    [métrica] = [valor de métrica]

    PortSupplier\

      0= [guid do fornecedor de porta]

      1= [guid do fornecedor de porta]

Espaço reservado

Descrição

[engine guid]

O GUID do mecanismo de depuração.

[guid de classe]

O GUID da classe que implementa este mecanismo de depuração.

[guid do fornecedor de porta]

O GUID do fornecedor de porta, se houver. Muitos mecanismos de depuração, usam o fornecedor de porta padrão e, portanto, não especificam seu próprio fornecedor. Neste caso, a subchave PortSupplier estará ausente.

Fornecedores de porta

Veja a seguir, a organização das métricas de fornecedor de porta no registro. PortSupplieré o nome do tipo de métrica para um fornecedor de porta e corresponde a [tipo de métrica].

PortSupplier\

  [guid do fornecedor de porta]\

    CLSID= [guid de classe]

    [métrica] = [valor de métrica]

    [métrica] = [valor de métrica]

Espaço reservado

Descrição

[guid do fornecedor de porta]

O GUID do fornecedor de porta

[guid de classe]

O GUID da classe que implementa este fornecedor de porta

Provedores de símbolo

Veja a seguir, a organização das métricas de fornecedor do símbolo no registro. SymbolProvideré o nome do tipo de métrica para o provedor de símbolo e corresponde a [tipo de métrica].

SymbolProvider\

  [símbolo guid do provedor]\

    file\

      CLSID= [guid de classe]

      [métrica] = [valor de métrica]

      [métrica] = [valor de métrica]

    metadata\

      CLSID= [guid de classe]

      [métrica] = [valor de métrica]

      [métrica] = [valor de métrica]

Espaço reservado

Descrição

[símbolo guid do provedor]

O GUID do provedor do símbolo

[guid de classe]

O GUID da classe que implementa este provedor de símbolo

Avaliadores de expressão

Veja a seguir, a organização das métricas de avaliador de expressão no registro. ExpressionEvaluatoré o nome de tipo de métrica para o avaliador da expressão e corresponde a [tipo de métrica].

Dica

O tipo de métrica para ExpressionEvaluator não está definida no dbgmetric.h, como presume-se que todas as alterações da métrica de avaliadores de expressão percorrer as funções de métrica de avaliador de expressão apropriada (o layout da ExpressionEvaluator subchave é um pouco complicado, e assim os detalhes são ocultas dentro de dbgmetric.lib).

ExpressionEvaluator\

  [idioma guid]\

    [fornecedor guid]\

      CLSID= [guid de classe]

      [métrica] = [valor de métrica]

      [métrica] = [valor de métrica]

      Engine\

        0= [guid do mecanismo de depuração]

        1= [guid do mecanismo de depuração]

Espaço reservado

Descrição

[idioma guid]

O GUID de um idioma

[fornecedor guid]

O GUID de um fornecedor.

[guid de classe]

O GUID da classe que implementa esta avaliador de expressão

[guid do mecanismo de depuração]

O GUID de um mecanismo de depuração que este avaliador de expressão funciona com

Extensões do avaliador de expressão

Veja a seguir, a organização das métricas de extensão de avaliador de expressão no registro. EEExtensionsé o nome do tipo de métrica para a expressão de extensões do avaliador e corresponde a [tipo de métrica].

EEExtensions\

  [guid de extensão]\

    [métrica] = [valor de métrica]

    [métrica] = [valor de métrica]

Espaço reservado

Descrição

[guid de extensão]

O GUID de uma extensão do avaliador de expressão

Exceções

Veja a seguir, a organização das métricas exceções no registro. Exceptioné o nome do tipo de métrica para as exceções e corresponde a [tipo de métrica].

Exception\

  [guid do mecanismo de depuração]\

    [tipos de exceção]\

      [exceção]\

        [métrica] = [valor de métrica]

        [métrica] = [valor de métrica]

      [exceção]\

        [métrica] = [valor de métrica]

        [métrica] = [valor de métrica]

Espaço reservado

Descrição

[guid do mecanismo de depuração]

O GUID de um mecanismo de depuração que ofereça suporte a exceções.

[tipos de exceção]

Um título geral para a subchave identificando a classe de exceções que podem ser manipulados. Typical names are C++ Exceptions, Win32 Exceptions, Common Language Runtime Exceptions, and Native Run-Time Checks. Esses nomes são também usados para identificar uma determinada classe de exceção para o usuário.

[exceção]

Um nome para uma exceção: por exemplo, _com_error ou Control-Break. Esses nomes são também usados para identificar uma exceção específica para o usuário.

Requisitos

Esses arquivos estão localizados na Microsoft Visual Studio 2010 diretório de instalação do SDK (por padrão, [drive]\Arquivos de Programas\Microsoft Visual Studio SDK\ de 2010).

Cabeçalho: includes\dbgmetric.h

Biblioteca: libs\ad2de.lib, libs\dbgmetric.lib

Consulte também

Referência

Referência de API (Visual Studio depuração)