Este artigo responde a perguntas frequentes sobre a coleta de dumps no .NET.
Por que eu só recebo dumps no Linux se [dotnet-dump](dotnet-dump.md) ou meu [crashing process](dumps.md#collect-dumps-on-crash) está sendo executado elevado?
Em sistemas baseados em Linux, /proc/sys/kernel/ptrace_scope
controla quem pode chamar ptrace
e quais processos eles podem rastrear. Recomendamos que seja definido como 1
- o que significa que apenas processos na mesma cadeia de ancestralidade podem usar rastreado. Qualquer valor maior do que isso requer elevação ou pode ser desativado ptrace
completamente.
Por que não consigo coletar lixeiras quando estou dentro de um contêiner?
Para aplicativos executados sob qualquer tecnologia Open Container Initiative, o seccomp
perfil deve permitir chamadas para ptrace
. Por exemplo, Docker
usa containerd sob o capô como um tempo de execução de contêiner. Ao inicializar o tempo de execução, ele especifica um perfil seccomp padrão que permite ptrace
somente se o host do contêiner tiver uma versão do kernel superior a 4.8 ou se o CAP_SYS_PTRACE
recurso foi especificado.
Por que não consigo coletar dumps no macOS?
No macOS, o uso de requer que o host do processo de ptrace
destino esteja devidamente habilitado. Para obter informações sobre os direitos mínimos exigidos, consulte Direitos padrão.
Onde posso saber mais sobre como posso aproveitar dumps para ajudar a diagnosticar problemas em meu aplicativo .NET?
Aqui estão alguns recursos adicionais:
Como posso resolver "Não foi possível encontrar nenhuma versão compatível do framework"
No Linux, a DOTNET_ROOT
variável de ambiente deve apontar para a pasta correta quando definida. Quando ele aponta para outra versão do .NET, dotnet-dump
sempre produz esse erro. Quando a variável de ambiente não está definida, um erro diferente é produzido ("Você deve instalar o DOTNET_ROOT
.NET para executar este aplicativo").