In diesem Artikel werden häufig gestellte Fragen zum Sammeln von Speicherabbildern in .NET beantwortet.
Warum erhalte ich unter Linux nur Speicherabbilder, wenn [dotnet-dump](dotnet-dump.md) oder mein [abstürzender Prozess](dumps.md#collect-dumps-on-crash) mit erhöhten Rechten ausgeführt wird?
Auf Linux-basierten Systemen steuert /proc/sys/kernel/ptrace_scope
, wer ptrace
aufrufen kann, und welche Prozesse nachverfolgt werden können. Es sollte auf 1
festgelegt werden, d. h., nur Prozesse in derselben Herkunftskette können nachverfolgt verwenden. Jeder höhere Wert erfordert eine Erhöhung, oder könnte ptrace
vollständig deaktivieren.
Warum kann ich bei Ausführung innerhalb eines Containers keine Speicherabbilder sammeln?
Für Anwendungen, die unter einer Open Container Initiative-Technologie ausgeführt werden, muss das seccomp
-Profil Aufrufe von ptrace
zulassen. Beispielsweise verwendet Docker
im Hintergrund containerd als Containerruntime. Beim Initialisieren der Runtime wird ein seccomp-Profil angegeben, das ptrace
nur zulässt, wenn der Containerhost über eine höhere Kernelversion als 4.8 verfügt, oder wenn die CAP_SYS_PTRACE
-Funktion angegeben wurde.
Warum kann ich unter macOS keine Speicherabbilder sammeln?
Unter macOS erfordert die Verwendung von ptrace
, dass der Host des Zielprozesses über die erforderlichen Berechtigungen verfügt. Informationen zu den mindestens erforderlichen Berechtigungen finden Sie unter Standardberechtigungen.
Wo kann ich mehr darüber erfahren, wie ich Speicherabbilder nutzen kann, um Probleme in meiner .NET-Anwendung zu diagnostizieren?
Hier sind einige zusätzlichen Ressourcen:
Wie kann ich „Es konnte keine kompatible Frameworkversion gefunden werden.“ lösen?
Unter Linux muss die DOTNET_ROOT
-Umgebungsvariable beim Festlegen auf den richtigen Ordner verweisen. Wenn sie auf eine andere .NET-Version verweist, erzeugt dotnet-dump
immer diesen Fehler. Wenn die DOTNET_ROOT
-Umgebungsvariable nicht festgelegt ist, wird ein anderer Fehler erzeugt („Sie müssen .NET installieren, um diese Anwendung auszuführen“).