Alat diagnostik apa yang tersedia di .NET Core?
Perangkat lunak tidak selalu bertingkah seperti yang Anda harapkan, tetapi .NET Core memiliki alat dan API yang akan membantu Anda mendiagnosis masalah ini dengan cepat dan efektif.
Artikel ini membantu Anda menemukan berbagai alat yang Anda butuhkan.
Debugger
Debugger memungkinkan Anda berinteraksi dengan program Anda. Menjeda, mengeksekusi, memeriksa, dan melanjutkan secara bertahap memberi Anda wawasan tentang perilaku kode Anda. Debugger adalah pilihan yang baik untuk mendiagnosis masalah fungsional yang dapat dengan mudah direprodiksi.
Pengujian Unit
Pengujian unit adalah komponen utama integrasi berkelanjutan dan penyebaran perangkat lunak berkualitas tinggi. Pengujian unit dirancang untuk memberi Anda peringatan dini ketika Anda melanggar sesuatu.
Instrumentasi untuk pengamatan
.NET mendukung teknik instrumentasi standar industri menggunakan metrik, log, dan jejak terdistribusi. Instrumentasi adalah kode yang ditambahkan ke proyek perangkat lunak untuk merekam apa yang dilakukannya. Informasi ini kemudian dapat dikumpulkan dalam file, database, atau dalam memori dan dianalisis untuk memahami bagaimana program perangkat lunak beroperasi. Ini sering digunakan di lingkungan produksi untuk memantau masalah dan mendiagnosisnya. Runtime .NET memiliki instrumentasi bawaan yang dapat diaktifkan secara opsional dan API yang memungkinkan Anda menambahkan instrumentasi kustom khusus untuk aplikasi Anda.
Metrik
Metrik adalah pengukuran numerik yang dicatat dari waktu ke waktu untuk memantau performa dan kesehatan aplikasi. Metrik sering digunakan untuk menghasilkan pemberitahuan ketika potensi masalah terdeteksi. Metrik memiliki overhead performa yang sangat rendah dan banyak layanan mengonfigurasinya sebagai telemetri always-on.
Log
Pengelogan adalah teknik di mana kode diinstrumentasikan untuk menghasilkan log, catatan peristiwa menarik yang terjadi saat program sedang berjalan. Seringkali serangkaian dasar peristiwa log dikonfigurasi secara default dan pengelogan yang lebih luas dapat diaktifkan sesuai permintaan untuk mendiagnosis masalah tertentu. Overhead performa bervariasi tergantung pada berapa banyak data yang dicatat.
Jejak terdistribusi
Pelacakan Terdistribusi adalah bentuk pengelogan khusus yang membantu Anda melokalisasi kegagalan dan masalah performa dalam aplikasi yang didistribusikan di beberapa mesin atau proses. Teknik ini melacak permintaan melalui aplikasi yang menghubungkan pekerjaan bersama-sama yang dilakukan oleh komponen aplikasi yang berbeda dan memisahkannya dari pekerjaan lain yang mungkin dilakukan aplikasi untuk permintaan bersamaan. Dimungkinkan untuk melacak setiap permintaan dan pengambilan sampel dapat digunakan secara opsional untuk mengikat overhead performa.
Kesedihan
Cadangan adalah file yang berisi rekam jepret proses pada saat pembuatan. Ini dapat berguna untuk memeriksa status aplikasi Anda untuk tujuan penelusuran kesalahan.
Simbol
Simbol adalah pemetaan antara kode sumber dan biner yang dihasilkan oleh pengkompilasi. Ini biasanya digunakan oleh debugger .NET untuk mengatasi nomor baris sumber, nama variabel lokal, dan jenis informasi diagnostik lainnya.
Mengumpulkan diagnostik dalam kontainer
Alat diagnostik yang sama yang digunakan di lingkungan Linux non-kontainer juga dapat digunakan untuk mengumpulkan diagnostik dalam kontainer. Hanya ada beberapa perubahan penggunaan yang diperlukan untuk memastikan alat berfungsi dalam kontainer Docker.
Alat global diagnostik .NET Core
penghitung dotnet
penghitung dotnet adalah alat pemantauan performa untuk pemantauan kesehatan tingkat pertama dan penyelidikan performa. Ini mengamati nilai penghitung kinerja yang diterbitkan melalui EventCounter API. Misalnya, Anda dapat dengan cepat memantau hal-hal seperti penggunaan CPU atau tingkat pengecualian yang dilemparkan di aplikasi .NET Core Anda.
dotnet-dump
Alat dotnet-dump adalah cara untuk mengumpulkan dan menganalisis Windows dan cadangan inti Linux tanpa debugger asli.
dotnet-gcdump
Alat dotnet-gcdump adalah cara untuk mengumpulkan cadangan GC (Pengumpul Sampah) dari proses .NET langsung.
dotnet-trace
.NET Core mencakup apa yang disebut di EventPipe
mana data diagnostik diekspos. Alat dotnet-trace memungkinkan Anda untuk mengonsumsi data pembuatan profil yang menarik dari aplikasi Anda yang dapat membantu dalam skenario di mana Anda perlu membuat akar penyebab aplikasi berjalan lambat.
dotnet-stack
Alat dotnet-stack memungkinkan Anda mencetak tumpukan terkelola dengan cepat untuk semua utas dalam proses .NET yang sedang berjalan.
simbol dotnet
file unduhan simbol dotnet (simbol, DAC/DBI, file host, dll.) yang diperlukan untuk membuka cadangan inti atau minidump. Gunakan alat ini jika Anda memerlukan simbol dan modul untuk men-debug file cadangan yang diambil pada komputer yang berbeda.
dotnet-sos
dotnet-sos menginstal ekstensi penelusuran kesalahan SOS di Linux dan macOS (dan di Windows jika Anda menggunakan Windbg/cdb).
PerfCollect
PerfCollect adalah skrip bash yang dapat Anda gunakan untuk mengumpulkan jejak dengan perf
dan LTTng
untuk analisis performa aplikasi .NET yang lebih mendalam yang berjalan pada distribusi Linux.
Tutorial diagnostik .NET Core
Menulis alat diagnostik Anda sendiri
Pustaka klien diagnostik memungkinkan Anda menulis alat diagnostik kustom Anda sendiri yang paling cocok untuk skenario diagnostik Anda. Cari informasi di referensi API Microsoft.Diagnostics.NETCore.Client.
Men-debug kebocoran memori
Tutorial: Debug kebocoran memori berjalan melalui menemukan kebocoran memori. Alat penghitung dotnet digunakan untuk mengonfirmasi kebocoran dan alat dotnet-dump digunakan untuk mendiagnosis kebocoran.
Debug penggunaan CPU tinggi
Tutorial: Men-debug penggunaan CPU tinggi memandang Anda menyelidiki penggunaan CPU yang tinggi. Ini menggunakan alat penghitung dotnet untuk mengonfirmasi penggunaan CPU yang tinggi. Kemudian memancang Anda menggunakan Trace untuk utilitas analisis performa (dotnet-trace
) atau Linux perf
untuk mengumpulkan dan melihat profil penggunaan CPU.
Kebuntuan debug
Tutorial: Kebuntuan debug menunjukkan kepada Anda cara menggunakan alat dotnet-dump untuk menyelidiki utas dan kunci.
Debug ThreadPool Kelaparan
Tutorial: Debug threadPool kelaparan menunjukkan kepada Anda cara menggunakan alat dotnet-counters dan dotnet-stack untuk menyelidiki kelaparan ThreadPool.
Men-debug StackOverflow
Tutorial: Men-debug StackOverflow menunjukkan cara men-debug StackOverflowException di Linux.
Debug cadangan Linux
Debug dump Linux menjelaskan cara mengumpulkan dan menganalisis cadangan di Linux.
Mengukur performa menggunakan EventCounters
Tutorial: Mengukur performa menggunakan EventCounters di .NET menunjukkan kepada Anda cara menggunakan EventCounter API untuk mengukur performa di aplikasi .NET Anda.