Coletar despejos em caso de falha

A configuração de seu aplicativo para coletar um despejo em uma falha é feita definindo variáveis de ambiente específicas. Isso é útil quando você quer entender por que uma falha ocorreu. Por exemplo, capturar um despejo quando uma exceção é lançada ajuda a identificar o problema examinando o estado do aplicativo no momento da falha.

A tabela a seguir mostra as variáveis de ambiente que você pode configurar para coletar despejos em caso de falha.

Variável de ambiente Descrição Valor padrão
COMPlus_DbgEnableMiniDump ou DOTNET_DbgEnableMiniDump Se definido como 1, habilita a geração de despejo principal. 0
COMPlus_DbgMiniDumpType ou DOTNET_DbgMiniDumpType Tipo de despejo a ser coletado. Para obter mais informações, confira Tipos de mini despejos. 2 (Heap)
COMPlus_DbgMiniDumpName ou DOTNET_DbgMiniDumpName Caminho do arquivo em que será gravado o despejo. Verifique se o usuário sob o qual o processo dotnet está sendo executado tem permissões de gravação no diretório especificado. /tmp/coredump.<pid>
COMPlus_CreateDumpDiagnostics ou DOTNET_CreateDumpDiagnostics Se definido como 1, habilita o log de diagnóstico do processo de despejo. 0
COMPlus_EnableCrashReport ou DOTNET_EnableCrashReport (Requer .NET 6 ou posterior, sem suporte no Windows.)
Se definido como 1, o runtime gerará um relatório de falha formatado em JSON, que inclui informações sobre os threads e os quadros de pilha do aplicativo com falha. O nome do relatório de falha é o caminho de despejo ou o nome com .crashreport.json acrescentado.
COMPlus_CreateDumpVerboseDiagnostics ou DOTNET_CreateDumpVerboseDiagnostics (Requer o .NET 7 ou posterior.)
Se definido como 1, habilita o log de diagnóstico detalhado do processo de despejo.
0
COMPlus_CreateDumpLogToFile ou DOTNET_CreateDumpLogToFile (Requer o .NET 7 ou posterior.)
O caminho do arquivo no qual as mensagens de diagnóstico devem ser gravadas.
Se não estiver definido, as mensagens de diagnóstico serão gravadas no console do aplicativo com falha.

Observação

O .NET 7 padroniza o prefixo DOTNET_ em vez de COMPlus_ para essas variáveis de ambiente. No entanto, o prefixo COMPlus_ continuará funcionando. Se você estiver usando uma versão anterior do runtime do .NET, continue usando o prefixo COMPlus_ para variáveis de ambiente.

Modelos de caminho de arquivo

A partir do .NET 5, DOTNET_DbgMiniDumpName também pode incluir especificadores de modelo de formatação que serão preenchidos dinamicamente:

Especificador Valor
%% Um único caractere de %
%p PID do processo despejado
%e O nome do arquivo executável do processo
%h Retorno do nome do host por gethostname()
%t Hora do despejo, expressa em segundos desde a época, 1970-01-01 00:00:00 +0000 (UTC)

Tipos de mini despejos

A tabela a seguir mostra todos os valores que você pode usar para DOTNET_DbgMiniDumpType. Por exemplo, definir DOTNET_DbgMiniDumpType como 1 significa que o despejo de tipo Mini será coletado em caso de falha.

Valor Nome Descrição
1 Mini Um pequeno despejo contendo listas de módulos, listas de threads, informações de exceção e todas as pilhas.
2 Heap Um despejo grande e relativamente abrangente que contém listas de módulos, listas de threads, todas as pilhas, informações de exceção, informações de manipulação e toda a memória, exceto imagens mapeadas.
3 Triage O mesmo que Mini, mas remove as informações pessoais do usuário, como caminhos e senhas.
4 Full O maior despejo que contém toda a memória, incluindo as imagens do módulo.

Há suporte apenas para despejos completos nos modelos de aplicativo AOT nativo e de arquivo único.