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?
Oto kilka dodatkowych zasobów:
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ę").