Compartilhar via


Sobre a API de criação de perfil

Um criador de perfil é uma ferramenta que monitora a execução de outro aplicativo. Um criador de perfil de tempo de execução (CLR) de linguagem comum é uma biblioteca de vínculo dinâmico (DLL) que consiste em funções que receber mensagens e enviem mensagens para o CLR usando a API de criação de perfil. O criador de perfil DLL é carregado pelo CLR em time de execução.

Definindo o perfil tradicional ferramentas se concentre nos medindo a execução do aplicativo. Isto é, mede o time gasto em cada função ou o Uso de Memória do aplicativo ao longo do time. A API de criação de perfil destina-se a classe mais ampla de ferramentas de diagnóstico, sistema autônomo utilitários de cobertura de código e até mesmo avançados auxílios de depuração. Esses usos são todos diagnóstico por natureza. A API de criação de perfil não só mede, mas também monitora a execução de um aplicativo. Por esse motivo, a API de criação de perfil nunca deve ser usada pelo aplicativo propriamente dito e execução do aplicativo não deve dependem (ou ser afetada por) o criador de perfil.

Definindo o perfil de um aplicativo do CLR requer suporte maior que o perfil convencionalmente computador código compilado. Isso ocorre porque o CLR apresenta sistema autônomo conceitos, sistema autônomo domínios de aplicativos, coleta de lixo, gerenciado de manipulação de exceção, compilação just-in-time (JIT) de código (convertendo Microsoft intermediate linguagem ou MSIL, código no código de computador nativo) e recursos semelhantes. Mecanismos de criação de perfil convencionais não é possível identificar ou fornecer informações úteis sobre esses recursos. A API de criação de perfil fornece essas informações ausentes com eficiência, com impacto mínimo sobre o desempenho do CLR e o aplicativo perfilado.

Compilação JIT em time de execução fornece mercadoria oportunidades para a criação de perfil. A API de criação de perfil permite que um criador de perfil alterar o fluxo de código MSIL de memória para uma rotina antes de que é compilado em JIT. Dessa forma, o criador de perfil dinamicamente pode adicionar código de instrumentação a determinado rotinas que precisam de investigação mais profunda. Embora essa abordagem seja possível em cenários convencionais, é muito mais fácil de implementar para o CLR, usando a API de criação de perfil.

A API de criação de perfil

Normalmente, a API de criação de perfil é usada para gravar um criador de perfil de código, que é um programa que monitora a execução de um aplicativo gerenciado.

A API de criação de perfil é usada por um criador de perfil de DLL, que é carregado no mesmo processo sistema autônomo o aplicativo que está sendo perfilado. O criador de perfil DLL implementa uma interface de retorno de chamada (ICorProfilerCallback no .NET estrutura versão 1.0 e 1.1, ICorProfilerCallback2 na versão 2.0). O CLR chama os métodos na interface para notificar o criador de perfil de eventos do processo com perfil. O criador de perfil pode chamar novamente no tempo de execução usando os métodos no ICorProfilerInfo and ICorProfilerInfo2 interfaces para obter informações sobre o estado da aplicação com perfil.

ObservaçãoObservação:

Apenas a parte de coleta de dados da solução criador de perfil deve estar sendo executado no mesmo processo sistema autônomo o aplicativo perfilado. Todos os usuário interface e análise de dados deve ser executada em um processo separado.

A ilustração a seguir mostra como o criador de perfil DLL interage com o aplicativo que está sendo perfilado e o CLR.

Arquitetura de criação de perfil

Arquitetura de criaão de perfil

As interfaces de notificação

ICorProfilerCallback and ICorProfilerCallback2 pode ser considerada interfaces de notificação. Essas interfaces consistem de métodos, sistema autônomo ClassLoadStarted, ClassLoadFinished, and JITCompilationStarted. Sempre que o CLR carrega ou descarrega uma classe, compila uma função e assim por diante, ele chama o método correspondente do criador de perfil ICorProfilerCallback ou ICorProfilerCallback2 interface.

Por exemplo, um criador de perfil poderia medir o desempenho do código por meio de duas funções de notificação: FunctionEnter2 and FunctionLeave2. Ele apenas carimbos de data / time cada notificação, acumula os resultados e produz uma lista que indica quais funções consumido mais time da CPU ou relógio parede durante a execução do aplicativo.

As interfaces de recuperação de informações sobre

As outras principais interfaces envolvidas na criação de perfil são ICorProfilerInfo and ICorProfilerInfo2. O criador de perfil chama essas interfaces conforme necessário para obter mais informações para ajudar a sua análise. Por exemplo, sempre que o CLR chama o FunctionEnter2 função, ele fornece um identificador de função. O criador de perfil pode obter mais informações sobre essa função, chamando o ICorProfilerInfo2::GetFunctionInfo2 método para descobrir a classe do pai da função, nome e assim por diante.

Consulte também

Outros recursos

Criação de perfil do .NET estrutura

Visão geral de criação de perfil