В этой статье приводятся ответы на часто задаваемые вопросы о сборе дампов в .NET.
Почему я получаю дампы только в Linux, если выполняется [dotnet-dump](dotnet-dump.md) или мой [аварийно-аварийный процесс](dumps.md#collect-dumps-on-crash) выполняется с повышенными привилегиями?
В системах под управлением Linux управляет тем, /proc/sys/kernel/ptrace_scope
кто может вызывать ptrace
и какие процессы они могут отслеживать. Рекомендуется задать 1
значение — это означает, что только процессы в той же цепочке происхождения могут использовать трассировку. Любое значение выше, чем это требует повышения или может полностью отключиться ptrace
.
Почему я не могу собирать дампы при выполнении внутри контейнера?
Для приложений, работающих в любой технологии Open Container Initiative, seccomp
профиль должен разрешать вызовы ptrace
. Например, Docker
использует контейнер под капотом в качестве среды выполнения контейнера. При инициализации среды выполнения он указывает профиль seccomp по умолчанию, который позволяет ptrace
только в том случае, если узел контейнера имеет версию ядра выше 4.8 или если CAP_SYS_PTRACE
была указана возможность.
Почему я не могу собирать дампы в macOS?
В macOS использование ptrace
требует правильного права узла целевого процесса. Сведения о минимальных обязательных правах см. в разделе "Права по умолчанию".
Где можно узнать больше о том, как использовать дампы для диагностики проблем в приложении .NET?
Ниже приведены некоторые дополнительные ресурсы.
Как решить проблему "Не удалось найти любую совместимую версию платформы"
В Linux DOTNET_ROOT
переменная среды должна указывать на правильную папку при установке. Если он указывает на другую версию .NET, dotnet-dump
всегда создает эту ошибку. DOTNET_ROOT
Если переменная среды не задана, создается другая ошибка ("Необходимо установить .NET для запуска этого приложения").