Requisitos: Ao desenvolver aplicações usando .NET/C#, é impossível para qualquer desenvolvedor garantir uma execução estável e robusta do programa, o que pode estar relacionado à lógica do código do desenvolvedor ou ao ambiente de execução do usuárioNão há garantia 100% de que a aplicação que você desenvolver será livre de problemasNão é terrível ter um problema, mas o pior é que existe um problema que não consegue encontrar a causa e resolvê-lo.
Se a aplicação não for executada como esperado e ocorrer uma saída anormal, como um arquivo de dump DMP pode ser gerado automaticamente para solucionar o problema?
Um dump é um arquivo que contém um snapshot do processo quando foi criado e pode ser usado para verificar o estado da aplicação. Quando é difícil anexar um depurador a uma aplicação .NET, como um ambiente de produção ou CI, você pode usar dumps para depurar a aplicação. O uso de dumps captura o estado dos processos problemáticos, e o estado pode ser verificado diretamente sem parar a aplicação.
Coletar despejos
Você pode usar variáveis de ambiente para configurar sua aplicação para coletar dumps em caso de falha. Isso é útil se você quiser saber a causa da falha. Por exemplo, capturar dumps quando uma exceção é lançada ajuda a identificar problemas verificando o estado do app caso ele falhe.
A tabela a seguir mostra as variáveis de ambiente que você pode usar para configurar sua aplicação para coletar dumps em caso de falha.
variável de ambiente | ilustrar | Inadimplência | | COMPlus_DbgEnableMiniDump ou DOTNET_DbgEnableMiniDump | Se estiver configurado para 1, ative a geração de despejo do núcleo. | 0 | | COMPlus_DbgMiniDumpType ou DOTNET_DbgMiniDumpType | O tipo de despejo para coletar. Veja a tabela abaixo para detalhes | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName ou DOTNET_DbgMiniDumpName | Escreva o caminho do arquivo para o dump. Certifique-se de que o usuário que executa o processo dotnet tenha acesso de gravação ao diretório especificado. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics ou DOTNET_CreateDumpDiagnostics | Se estiver configurado para 1, ative o registro de diagnóstico para o processo de dump. | 0 | | COMPlus_EnableCrashReport ou DOTNET_EnableCrashReport | (Requer .NET 6 ou posterior) Se definido como 1, o tempo de execução gera um relatório de falha no formato JSON que inclui informações sobre as threads e os frames de pilha da aplicação falhada. O nome do relatório de falha é o caminho/nome de dump adicionado a .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics ou DOTNET_CreateDumpVerboseDiagnostics | (Requer .NET 7 ou posterior) Se definido como 1, ative o registro detalhado de diagnóstico para o processo de dump. | 0 | | COMPlus_CreateDumpLogToFile ou DOTNET_CreateDumpLogToFile | (.NET 7 ou posterior necessário) O caminho do arquivo para a mensagem de diagnóstico deve ser escrito. Se não estiver ativado, uma mensagem de diagnóstico é gravada no console da aplicação com falha. | |
Para essas variáveis de ambiente, o .NET 7 padroniza o prefixo DOTNET_ em vez de COMPlus_. No entanto, o prefixo COMPlus_ continuará funcionando corretamente. Se você forEm versões anteriores do runtime .NET, as variáveis de ambiente ainda deveriam usar o prefixo COMPlus_。
Criar um novo teste de aplicação .NET Core 6
Use o VS 2022 para testar um novo teste de aplicativo .NET Core 6 com o seguinte código:
Inicie o programa usando o comando cmd, como mostrado na imagem abaixo:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Exceção não resolvida. System.Exception: itsvse.com no Programa. <Main>$(String[] args) em C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:linha 9 [createdump] Escrevendo minidump com heap para o arquivo C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Despejo escrito com sucesso
Você pode ver que, após o programa travar de forma anormal, ele é bem-sucedido no diretório que especificamosO arquivo de .dmp dump é geradoQuanto a como analisar, é outra questão.
Configurações Universais da Plataforma Windows
No Windows, o Windows Error Reporting (WER) pode ser configurado para gerar dumps quando um aplicativo trava.
Esse método funciona para todos os programas, não apenas para . programas .NET, como C++, Go, etc.; E e. REDE. Versão NET Core
- Abra regedit.exe
- Abra o diretório HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Relatório de Erros\LocalDumps
- Crie uma KEY DumpFolder do tipo REG_EXPAND_SZ para configurar o diretório onde os arquivos de dump são armazenados
- Você também pode criar um KEY DumpCount do tipo REG_DWORD configurar a quantidade total de dumps
Claro, você também pode configurar isso usando comandos do PowerShell:
De acordo com a configuração acima, se o programa sair de forma anormal, ele criará um despejo do programa no diretório %LOCALAPPDATA%\CrashDumps.
Recursos:
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.
|