Editar

Compartilhar via


Perguntas frequentes sobre despejos

Este artigo responde a perguntas frequentes sobre como coletar despejos no .NET.

Por que só recebo despejos no Linux se [dotnet-dump](dotnet-dump.md) ou meu [crashing process](dumps.md#collect-dumps-on-crash) está com privilégios elevados?

Nos sistemas Linux, /proc/sys/kernel/ptrace_scope controla quem pode chamar ptrace e quais processos podem rastrear. Recomendamos que seja definido como 1, o que significa que apenas processos na mesma cadeia de ancestrais podem usar rastreamento. Qualquer valor maior requer elevação ou pode desabilitar ptrace completamente.

Por que não consigo coletar despejos durante a execução de um contêiner?

Para aplicativos que executam qualquer tecnologia de Iniciativa de Contêiner Aberto, o perfil seccomp deve permitir chamadas para ptrace. Por exemplo, Docker usa container nos bastidores como um runtime de contêiner. Ao inicializar o runtime, ele especifica um perfil seccomp padrão que só permite ptrace se o host do contêiner tiver uma versão de kernel superior a 4.8 ou se a funcionalidade CAP_SYS_PTRACE tiver sido especificada.

Por que não consigo coletar despejos no macOS?

No macOS, o uso de ptrace requer que o host do processo de destino tenha direito adequado. Para obter informações sobre os direitos mínimos exigidos, consulte Direitos padrão.

Onde posso saber como melhorar os despejos para ajudar a diagnosticar problemas em meu aplicativo .NET?

Como posso resolver "Não foi possível localizar nenhuma versão de estrutura compatível"

No Linux, a variável de ambiente DOTNET_ROOT deve apontar para a pasta correta quando definida. Quando ela aponta para outra versão do .NET, dotnet-dump sempre produz esse erro. Quando a variável de ambiente DOTNET_ROOT não é definida, um erro diferente é produzido ("Você deve instalar o .NET para executar este aplicativo").