Często zadawane pytania dotyczące zrzutów

Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące zbierania zrzutów na platformie .NET.

Dlaczego pobieram zrzuty tylko w systemie Linux, jeśli [dotnet-dump](dotnet-dump.md) lub mój [proces awarii](zrzuty.md#collect-zrzuty-on-crash) jest uruchomiony podwyższony poziom uprawnień?

W systemach opartych na systemie Linux kontroluje, /proc/sys/kernel/ptrace_scope kto może wywoływać ptrace i jakie procesy mogą śledzić. Zalecamy jej ustawienie na 1 — co oznacza, że tylko procesy w tym samym łańcuchu przodków mogą używać śladów. Każda wartość wyższa niż wymaga podniesienia uprawnień lub może całkowicie wyłączyć ptrace .

Dlaczego nie mogę zbierać zrzutów podczas uruchamiania wewnątrz kontenera?

W przypadku aplikacji działających w ramach dowolnej technologii seccomp Open Container Initiative profil musi zezwalać na wywołania metody ptrace. Na przykład Docker jako środowisko uruchomieniowe kontenera jest używane kontenery . Podczas inicjowania środowiska uruchomieniowego określa domyślny profil seccomp, który zezwala ptrace tylko wtedy, gdy host kontenera ma wersję jądra wyższą niż 4.8 lub czy CAP_SYS_PTRACE określono możliwość.

Dlaczego nie mogę zbierać zrzutów w systemie macOS?

W systemie macOS użycie ptrace wymaga prawidłowego uprawnienia hosta procesu docelowego. Aby uzyskać informacje o minimalnych wymaganych uprawnieniach, zobacz Domyślne uprawnienia.

Gdzie mogę dowiedzieć się więcej na temat sposobu wykorzystania zrzutów w celu ułatwienia diagnozowania problemów w mojej aplikacji platformy .NET?

Jak mogę rozwiązać problem "Nie można znaleźć żadnej zgodnej wersji platformy"

W systemie Linux zmienna DOTNET_ROOT środowiskowa musi wskazywać prawidłowy folder po ustawieniu. Gdy wskazuje inną wersję platformy .NET, dotnet-dump zawsze generuje ten błąd. Jeśli zmienna DOTNET_ROOT środowiskowa nie jest ustawiona, zostanie wygenerowany inny błąd ("Musisz zainstalować platformę .NET, aby uruchomić tę aplikację").