Bagikan melalui


Diagnostik dalam .NET

Perangkat lunak tidak selalu bertingkah seperti yang Anda harapkan, tetapi .NET memiliki alat dan API yang akan membantu Anda mendiagnosis masalah ini dengan cepat dan efektif.

Penyebaran AOT asli adalah model aplikasi yang tersedia sejak .NET 7. Untuk informasi tentang dukungan diagnostik .NET 8 untuk aplikasi AOT Asli, lihat Diagnostik AOT asli.

Artikel ini membantu Anda menemukan berbagai alat yang Anda butuhkan.

Debugger

Debugger memungkinkan Anda berinteraksi dengan program Anda. Menjeda, mengeksekusi, memeriksa, dan membalas secara bertahap memberi Anda wawasan tentang perilaku kode Anda. Debugger adalah pilihan yang baik untuk mendiagnosis masalah fungsional yang dapat dengan mudah direprotes.

Profiler

Profiler memungkinkan Anda menganalisis performa program Anda. Anda dapat mengumpulkan data tentang penggunaan memori, penggunaan CPU, dan metrik lainnya untuk mendiagnosis dan memahami masalah performa.

Instrumentasi untuk pengamatan

.NET mendukung teknik instrumentasi standar industri menggunakan metrik, log, dan jejak terdistribusi, yang umumnya dikenal sebagai tiga pilar pengamatan.

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.

Catatan

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 adalah variabel tergantung pada berapa banyak data yang dicatat.

Untuk sebagian besar kasus, baik menambahkan pengelogan ke proyek yang ada atau membuat proyek baru, infrastruktur ILogger adalah pilihan default yang baik. ILogger mendukung pengelogan terstruktur cepat, konfigurasi fleksibel, dan kumpulan sink umum termasuk konsol , yang anda lihat saat menjalankan aplikasi ASP.NET. Selain itu, ILogger antarmuka juga dapat berfungsi sebagai fasad atas banyak implementasi pengelogan pihak ketiga yang menawarkan fungsionalitas dan ekstensibilitas yang kaya.

Metrics

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 yang selalu aktif. Pengecualian sering dicatat sebagai metrik, dan dapat diringkas untuk mengurangi kardinalitas data. Untuk informasi selengkapnya, lihat Ringkasan pengecualian.

Jejak terdistribusi

Pelacakan Terdistribusi adalah bentuk pencatatan 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 berkorelasi bersama-sama dengan pekerjaan 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.

Mengumpulkan instrumentasi

Ada beberapa cara agar data instrumentasi dapat keluar dari aplikasi, termasuk:

Diagnostik khusus

Jika penelusuran kesalahan atau pengamatan tidak cukup, .NET mendukung mekanisme diagnostik tambahan seperti EventSource, Dump, DiagnosticSource. Untuk informasi selengkapnya, lihat artikel diagnostik khusus .

Alat diagnostik

.NET mendukung sejumlah alat CLI yang dapat digunakan untuk mendiagnosis aplikasi Anda.

Tutorial diagnostik .NET Core

Mendebug 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.

Memperbaiki penggunaan CPU yang tinggi

Tutorial: Men-debug penggunaan CPU tinggi memancang 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 threadPool kelaparan.

Men-debug StackOverflow

Tutorial: Men-debug StackOverflow menunjukkan cara men-debug StackOverflowException di Linux.

Men-debug cadangan Linux

Debug cadangan Linux menjelaskan cara mengumpulkan dan menganalisis cadangan di Linux.

Mengukur performa menggunakan EventCounters

Tutorial: Mengukur performa menggunakan EventCounters di .NET menunjukkan cara menggunakan EventCounter API untuk mengukur performa di aplikasi .NET Anda.

Menulis alat diagnostik Anda sendiri

Pustaka klien diagnostik memungkinkan Anda menulis alat diagnostik kustom Anda sendiri yang paling cocok untuk skenario diagnostik Anda. Untuk informasi selengkapnya, lihat referensi API Microsoft.Diagnostics.NETCore.Client.