Часто задаваемые вопросы о дампах

В этой статье приводятся ответы на часто задаваемые вопросы о сборе дампов в .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 для запуска этого приложения").