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?
Estes são alguns recursos adicionais:
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").