Compartilhar via


Opções de configuração de runtime para depuração e criação de perfil

Este artigo detalha as configurações que você pode usar para configurar a depuração e a criação de perfil do .NET.

Observação

A partir do .NET 11, as variáveis de ambiente do criador de perfil dão suporte a prefixos e DOTNET a ambosCORECLR. O DOTNET prefixo é o novo padrão; CORECLR é mantido para compatibilidade com versões anteriores e pode ser removido no futuro.

Habilitar diagnóstico

  • Configura se o depurador, o criador de perfil e o diagnóstico eventPipe estão habilitados ou desabilitados.
  • Se você omitir essa configuração, o diagnóstico será habilitado. Isso é equivalente a definir o valor como 1.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_EnableDiagnostics 1 – Habilitado
0 -desabilitado

Habilitar criação de perfil

  • Configura se a criação de perfil está habilitada para o processo em execução no momento.
  • Se você omitir essa configuração, a criação de perfil será desabilitada. Isso é equivalente a definir o valor como 0.
  • Para carregar um criador de perfil, além de habilitar a criação de perfil, o GUID do criador de perfil e o local do criador de perfil também precisam ser configurados usando essas configurações.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_ENABLE_PROFILING 0 -desabilitado
1 – Habilitado

GUID do criador de perfil

  • Especifica o GUID do criador de perfil a ser carregado no processo em execução no momento.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente CORECLR_PROFILER ou DOTNET_PROFILER string-guid

Local do Criador de Perfil

Depois que a criação de perfil estiver habilitada, o criador de perfil poderá ser carregado de duas maneiras: com variáveis de ambiente (entre equipes) ou por meio do registro (somente Windows). As variáveis de ambiente de caminho do criador de perfil têm precedência sobre qualquer caminho de biblioteca COM no registro, se ambas forem especificadas.

Variável de ambiente (entre equipes)

  • Especifica o caminho para a DLL do criador de perfil a ser carregada no processo em execução no momento (ou processo de 32 bits ou 64 bits).
  • Se mais de uma variável for definida, as variáveis específicas de bits têm precedência. Eles especificam qual bit do criador de perfil carregar.
Nome da configuração Valores
Variável de ambiente CORECLR_PROFILER_PATH ou DOTNET_PROFILER_PATH string-path
Variável de ambiente CORECLR_PROFILER_PATH_32 ou DOTNET_PROFILER_PATH_32 string-path
Variável de ambiente CORECLR_PROFILER_PATH_64 ou DOTNET_PROFILER_PATH_64 string-path
Variável de ambiente CORECLR_PROFILER_PATH_ARM32 ou DOTNET_PROFILER_PATH_ARM32 string-path
Variável de ambiente CORECLR_PROFILER_PATH_ARM64 ou DOTNET_PROFILER_PATH_ARM64 string-path

Por meio do registro (somente Windows)

Quando as DOTNET_PROFILER_PATH*variáveis de DOTNET_PROFILER ambiente não são definidas durante a execução no Windows, o coreclr procura o CLSID no registro para encontrar o caminho completo para a DLL do criador de perfil. Assim como acontece com qualquer DLL de servidor COM, o CLSID do criador de perfil é pesquisado em HKEY_CLASSES_ROOT, que mescla as classes de HKLM e HKCU.

Exportar mapas perf e despejos de jit

  • Habilita ou desabilita mapas perf ou despejos de jit. Esses arquivos permitem que ferramentas de terceiros, como a ferramenta Linux perf , forneçam nomes legíveis humanos para códigos gerados dinamicamente e módulos R2R (ReadyToRun) pré-compilados.
  • Se você omitir essa configuração, a gravação do mapa perf e os arquivos de despejo de jit serão desabilitados. Isso é equivalente a definir o valor como 0.
  • Quando os mapas perf estiverem desabilitados, nem todos os sites de chamadas gerenciados serão resolvidos corretamente.
  • Dependendo da versão do kernel do Linux, ambos os formatos são compatíveis com a perf ferramenta.
  • Habilitar mapas perf ou despejos de jit pode causar até 20% sobrecarga, embora muitas vezes seja muito menos. Para minimizar o impacto no desempenho, é recomendável habilitar seletivamente mapas perf ou despejos de jit, mas não ambos. O impacto ocorre apenas enquanto o aplicativo é o código JITing. Geralmente isso ocorre na inicialização, mas pode ocorrer mais tarde se o aplicativo estiver executando um novo caminho de código pela primeira vez.

A tabela a seguir compara mapas perf e mapas jit.

Formato Description Com suporte em
Mapas de perf Emite , que contém informações simbólicas /tmp/perf-<pid>.mappara código gerado dinamicamente.
Emite , que inclui informações de símbolo do /tmp/perfinfo-<pid>.mapmódulo ReadyToRun (R2R) e é usado pelo PerfCollect.
Há suporte para mapas perf em todas as versões do kernel do Linux.
Despejos de Jit O formato de despejo jit substitui mapas perf e contém informações simbólicas mais detalhadas. Quando habilitados, os despejos jit são saída para /tmp/jit-<pid>.dump arquivos. Versões de kernel do Linux 5.4 ou superior.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_PerfMapEnabled 0 -desabilitado
1 - mapas perf e despejos de jit habilitados
2 – despejos de jit habilitados
3 – mapas perf habilitados

Marcadores de log perf

  • Habilita ou desabilita o sinal especificado a ser aceito e ignorado como um marcador nos logs de perf.
  • Se você omitir essa configuração, o sinal especificado não será ignorado. Isso é equivalente a definir o valor como 0.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_PerfMapIgnoreSignal 0 -desabilitado
1 – Habilitado

Observação

Essa configuração será ignorada se DOTNET_PerfMapEnabled for omitido ou definido 0 como (ou seja, desabilitado).