ダンプに関する FAQ

この記事では、.NET でのダンプ収集についてよく寄せられる質問に回答しています。

[dotnet-dump](dotnet-dump.md) または [crashing process](dumps.md#collect-dumps-on-crash) が管理者特権で実行されている場合、Linux ではダンプしか得られません。なぜでしょうか。

Linux ベースのシステムでは、/proc/sys/kernel/ptrace_scope によって、ptrace を呼び出せるユーザーと、そのユーザーがトレースできるプロセスが制御されます。 これは 1 に設定することを推奨します。同じ先祖チェーンのプロセスのみをトレースできます。 これより大きい値の場合、昇格が必要になるか、ptrace が完全に無効になります。

コンテナー内で実行しているとき、ダンプを収集できないのはなぜですか。

Open Container Initiative テクノロジの下で実行されるアプリケーションについては、seccomp プロファイルで ptrace の呼び出しを許可する必要があります。 たとえば、Docker では、コンテナー ランタイムとして内部で containerd が使用されます。 ランタイムを初期化するとき、コンテナー ホストのカーネル バージョンが 4.8 より上の場合にのみ、あるいは CAP_SYS_PTRACE 機能が指定されていた場合にのみ、ptrace を許可する既定の seccomp プロファイルが指定されます。

macOS でダンプを収集できないのはなぜですか。

macOS では、ptrace を使用するとき、ターゲット プロセスのホストに正しい権利が必要になります。 最小限必要な権利については、「既定の権利」を参照してください。

.NET アプリケーションの問題診断にダンプを活用する方法はどこでわかりますか。

"互換性のあるフレームワークのバージョンが見つかりませんでした" を解決するにはどうすればよいですか

Linux では、設定時に DOTNET_ROOT 環境変数が正しいフォルダーを指している必要があります。 別の .NET バージョンを指している場合、dotnet-dump では常にこのエラーが発生します。 DOTNET_ROOT 環境変数が設定されていない場合は、別のエラー ("このアプリケーションを実行するには .NET をインストールする必要があります") が発生します。