Compartilhar via


Configurando um ambiente de criação de perfil

Tópicos anteriores, nós descrito o que ocorre quando o aplicativo e o criador de perfil estão em execução. Mas como são os dois conectados quando um aplicativo é iniciado? O common linguagem tempo de execução (CLR) faz a conexão durante a inicialização em cada processo. Ele decide se conectar a um criador de perfil. Se ele decide se conectar, ele localiza o criador de perfil observando o valor de duas variáveis de ambiente na seguinte ordem:

  • COR_ENABLE_PROFILING: O CLR se conecta a um criador de perfil apenas se esta variável de ambiente existe e estiver definido como 1.

  • COR_PROFILER: Se o COR_ENABLE_PROFILING verificar passa, o CLR se conecta ao criador de perfil com essa CLSID ou ProgID, que deve ter sido armazenado anteriormente no registro. A variável de ambiente COR_PROFILER é definida sistema autônomo uma seqüência de caracteres, sistema autônomo mostra sistema autônomo dois exemplos a seguir.

    set COR_PROFILER={32E2F4DA-1BEA-47ea-88F9-C5DAF691C94A}
    set COR_PROFILER="MyProfiler"
    

Portanto, para criar o analisar de uma aplicação do CLR, você deve conjunto as variáveis de ambiente COR_ENABLE_PROFILING e COR_PROFILER antes de executar o aplicativo. Além disso, você deve certificar-se de que o criador de perfil DLL está registrado.

Escopo de variáveis de ambiente

Como você conjunto as variáveis de ambiente COR_ENABLE_PROFILING e COR_PROFILER irá determinar o escopo de influência. Você pode conjunto essas variáveis uma das seguintes maneiras:

  • Se você conjunto as variáveis em um ICorDebug::CreateProcess telefonar, eles serão aplicar somente para o aplicativo que está sendo executada no momento. (Eles também serão aplicar para outros aplicativos iniciados pelo aplicativo que herdam o ambiente.)

  • Se você conjunto as variáveis em uma janela do aviso de comando, elas se aplicarão a todos os aplicativos que são iniciados dessa janela.

  • Se você conjunto as variáveis no nível do usuário, serão aplicar a todos os aplicativos que você iniciar com o Windows Explorer. A janela do aviso de comando que você em aberto depois de conjunto as variáveis terão essas configurações de ambiente, e também qualquer aplicativo que você iniciar a partir dessa janela. Para conjunto variáveis de ambiente no nível do usuário, clicar com o botão direito do mouse em Meu computador, click Propriedades, clique no Avançado guia, click Variáveis de ambientee adicione as variáveis a Variáveis de usuário lista.

  • Se você conjunto as variáveis no nível do computador, elas se aplicarão a todos os aplicativos que são iniciados no computador. Uma janela do aviso de comando que você em em aberto nesse computador terão essas configurações de ambiente e também qualquer aplicativo que você iniciar a partir dessa janela. Isso significa que todos os processos gerenciado no computador serão iniciado com o seu criador de perfil. Para conjunto variáveis de ambiente no nível do computador, clicar com o botão direito do mouse em Meu computador, click Propriedades, clique no Avançado , clique em Variáveis de ambiente, adicionar as variáveis à Variáveis do sistema lista e, em seguida, reinicie o computador. Após reiniciar, as variáveis estará disponível em todo o sistema.

Caso você esteja criando o perfil de um serviço do Windows, reinicie o computador depois de conjunto as variáveis de ambiente e registrar a DLL do criador de perfil. Para obter mais informações sobre essas considerações, consulte Definindo o perfil de um serviço do Windows.

Considerações adicionais

  • A classe do criador de perfil implementa o ICorProfilerCallback and ICorProfilerCallback2 interfaces. No .NET estrutura versão 2.0, um criador de perfil deve implementar ICorProfilerCallback2. Se não, ICorProfilerCallback2 não será carregado.

  • Somente um gerador de analisar pode criar o analisar de um processo ao mesmo time em um ambiente específico. Você pode registrar duas geradores de perfis diferentes em diferentes ambientes, mas cada um deve criar o analisar criador de perfil processes.The separada deve ser implementado sistema autônomo um servidor de COM em processo DLL, que é mapeado para o mesmo espaço de endereço sistema autônomo o processo está sendo perfilado. Isso significa que o criador de perfil é executado em processo. O .NET estrutura não suporta qualquer Outros tipo de servidor COM. Por exemplo, se quiser um criador de perfil monitorar aplicativos a partir de um computador remoto, ele deve implementar agentes coletores em cada computador. Esses agentes serão os resultados de lote e comunicam-se-los para o computador de coleta de dados central.

  • Como o criador de perfil é um objeto COM que é instanciado no processo, cada aplicativo perfilado terá sua própria cópia do criador de perfil. Portanto, uma instância única do criador de perfil não tem que lidar com dados de vários aplicativos. No entanto, você precisará adicionar lógica de código de registrar registrar registrar em log do criador de perfil para impedir que o arquivo de registrar registrar registrar em log substitui de outros aplicativos com perfil.

Inicializando o criador de perfil

Ao passam de ambas as verificações de variável de ambiente, o CLR cria uma instância do criador de perfil de forma semelhante à COM CoCreateInstance função. O criador de perfil não foi carregado por meio de uma telefonar direta para CoCreateInstance. Portanto, uma telefonar para CoInitialize, que requer configuração o modelo de threading é evitado. O CLR, em seguida, chama o ICorProfilerCallback::inicializar método no criador de perfil. A assinatura desse método é sistema autônomo segue.

HRESULT Initialize(IUnknown *pICorProfilerInfoUnk)

O criador de perfil deve consultar pICorProfilerInfoUnk para um ICorProfilerInfo or ICorProfilerInfo2 ponteiro de interface e salvá-lo para que ele pode solicitar mais informações posteriormente durante a criação de perfil.

Evento configuração notificações

O criador de perfil, em seguida, chama o ICorProfilerInfo::SetEventMask método para especificar quais categorias de notificações interessado em. Por exemplo, se o criador de perfil estiver interessado apenas em função entram e saem de notificações e notificações de coleta de lixo, especifica o seguinte.

ICorProfilerInfo* pInfo;
pICorProfilerInfoUnk->QueryInterface(IID_ICorProfilerInfo, (void**)&pInfo);
pInfo->SetEventMask(COR_PRF_MONITOR_ENTERLEAVE | COR_PRF_MONITOR_GC)

Ao definir a máscara de notificações dessa maneira, o criador de perfil pode limitar quais as notificações que recebe. Essa abordagem ajuda o usuário criar um criador de perfil simples ou de finalidade especial. Além disso, reduz o time de CPU poderia ser perdido enviar notificações que o criador de perfil poderia ignorar apenas.

Certos eventos do criador de perfil são imutáveis. Isso significa que assim que esses eventos são definidos no ICorProfilerCallback::Initialize retorno de chamada, eles não podem ser desativados e novos eventos não podem ser ativados. As tentativas de alterar um evento imutável resultem em ICorProfilerInfo::SetEventMask retornando uma falha HRESULT.

Consulte também

Outros recursos

Criação de perfil do .NET estrutura

Visão geral de criação de perfil