Partilhar via


Opções de configuração de tempo de execução 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 do ambiente do profiler suportam tanto DOTNET os prefixos como CORECLR os próprios. O DOTNET prefixo é o novo padrão; CORECLR é mantido para compatibilidade retrocedente e poderá ser removido no futuro.

Ativar diagnósticos

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

Ativar 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 equivale a definir o valor como 0.
  • Para carregar um perfilador, além de ativar o perfil, o GUID e a localização do perfilador também precisam de ser configurados usando estas definições.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_ENABLE_PROFILING 0 - deficientes
1 - ativado

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

Localização do criador de perfil

Uma vez ativado o perfil, o perfilador pode ser carregado de duas formas: com variáveis de ambiente (cross-plat) ou através do registo (apenas Windows). As variáveis de ambiente do caminho do perfilador têm precedência sobre qualquer caminho da biblioteca COM no registo, se ambos forem especificados.

Variável de ambiente (cross-plot)

  • 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 bitness terão precedência. Eles especificam qual bitness do profiler carregar.
Nome da configuração Valores
Variável de ambiente CORECLR_PROFILER_PATH ou DOTNET_PROFILER_PATH caminho da cadeia de caracteres
Variável de ambiente CORECLR_PROFILER_PATH_32 ou DOTNET_PROFILER_PATH_32 caminho da cadeia de caracteres
Variável de ambiente CORECLR_PROFILER_PATH_64 ou DOTNET_PROFILER_PATH_64 caminho da cadeia de caracteres
Variável de ambiente CORECLR_PROFILER_PATH_ARM32 ou DOTNET_PROFILER_PATH_ARM32 caminho da cadeia de caracteres
Variável de ambiente CORECLR_PROFILER_PATH_ARM64 ou DOTNET_PROFILER_PATH_ARM64 caminho da cadeia de caracteres

Através do registo (apenas Windows)

Quando as DOTNET_PROFILER_PATH*variáveis de ambiente não estão definidas durante a execução no Windows, o coreclr procura o CLSID no DOTNET_PROFILER registo para encontrar o caminho completo até à DLL do profiler. Tal como em qualquer DLL de servidor COM, o CLSID do profiler é consultado em HKEY_CLASSES_ROOT, o que funde as classes do HKLM e do HKCU.

Exportar mapas de perf e jit dumps

  • Habilita ou desabilita mapas perf ou jit dumps. Esses arquivos permitem que ferramentas de terceiros, como a ferramenta Linux perf , forneçam nomes legíveis por humanos para código gerado dinamicamente e módulos ReadyToRun (R2R) pré-compilados.
  • Se você omitir essa configuração, a gravação de arquivos perf map e jit dump será desabilitada. Isso equivale a definir o valor como 0.
  • Quando os mapas perf são desativados, nem todos os sites de chamada gerenciados serão resolvidos corretamente.
  • Dependendo da versão do kernel Linux, ambos os formatos são suportados perf pela ferramenta.
  • Habilitar mapas de perf ou jit dumps pode causar até 20% de sobrecarga, embora muitas vezes seja muito menor. Para minimizar o impacto no desempenho, é recomendável habilitar seletivamente mapas perf ou jit dumps, mas não ambos. O impacto ocorre apenas enquanto o aplicativo é código JITing. Muitas vezes, 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 jit maps.

Formato Description Suportado em
Mapas de Perf Emite /tmp/perf-<pid>.map, que contém informações simbólicas para código gerado dinamicamente.
/tmp/perfinfo-<pid>.mapEmite , que inclui informações do símbolo do módulo ReadyToRun (R2R) e é usado pelo PerfCollect.
Os mapas Perf são suportados em todas as versões do kernel Linux.
Despejos de Jit O formato jit dump substitui os mapas perf e contém informações simbólicas mais detalhadas. Quando ativado, os despejos jit são enviados para /tmp/jit-<pid>.dump arquivos. Linux kernel versões 5.4 ou superior.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_PerfMapEnabled 0 - deficientes
1 - Mapas Perf e Jit Dumps ambos ativados
2 - Dumps JIT ativados
3 - Mapas PERF ativados

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 equivale a definir o valor como 0.
Nome da configuração Valores
runtimeconfig.json N/A N/A
Variável de ambiente DOTNET_PerfMapIgnoreSignal 0 - deficientes
1 - ativado

Observação

Essa configuração será ignorada se DOTNET_PerfMapEnabled for omitida ou definida como 0 (ou seja, desabilitada).