Tanya Jawab Umum untuk cadangan

Artikel ini menjawab pertanyaan umum tentang mengumpulkan cadangan di .NET.

Mengapa saya hanya mendapatkan cadangan di Linux jika [dotnet-dump](dotnet-dump.md) atau [proses crash](dumps.md#collect-dumps-on-crash) berjalan ditinggikan?

Pada sistem berbasis Linux, /proc/sys/kernel/ptrace_scope mengontrol siapa yang dapat memanggil ptrace dan proses apa yang dapat mereka lacak. Sebaiknya diatur ke 1 - yang berarti hanya proses dalam rantai leluhur yang sama yang dapat menggunakan dilacak. Nilai apa pun yang lebih tinggi dari ini memerlukan elevasi atau mungkin dinonaktifkan ptrace sama sekali.

Mengapa saya tidak dapat mengumpulkan cadangan saat berjalan di dalam kontainer?

Untuk aplikasi yang berjalan di bawah teknologi Open Container Initiative, seccomp profil harus memungkinkan panggilan ke ptrace. Misalnya, Docker menggunakan kontainer di bawah kap sebagai runtime kontainer. Saat menginisialisasi runtime, itu menentukan profil seccomp default yang hanya memungkinkan ptrace jika host kontainer memiliki versi kernel yang lebih tinggi dari 4.8 atau jika CAP_SYS_PTRACE kemampuan ditentukan.

Mengapa saya tidak dapat mengumpulkan cadangan di macOS?

Di macOS, penggunaan ptrace mengharuskan host proses target untuk berhak dengan benar. Untuk informasi tentang hak minimum yang diperlukan, lihat Hak default.

Di mana saya dapat mempelajari selengkapnya tentang bagaimana saya dapat memanfaatkan cadangan untuk membantu mendiagnosis masalah di aplikasi .NET saya?

Berikut adalah beberapa sumber daya tambahan:

Bagaimana cara memecahkan "Tidak mungkin menemukan versi kerangka kerja yang kompatibel"

Di Linux, DOTNET_ROOT variabel lingkungan harus menunjuk ke folder yang benar saat diatur. Ketika menunjuk ke versi .NET lain, dotnet-dump selalu menghasilkan kesalahan ini. DOTNET_ROOT Ketika variabel lingkungan tidak diatur, kesalahan yang berbeda dihasilkan ("Anda harus menginstal .NET untuk menjalankan aplikasi ini").