Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
AOT asli berbagi beberapa, tetapi tidak semua, kemampuan diagnostik dan instrumentasi dengan runtime .NET penuh. Aplikasi yang kompatibel dengan trim seharusnya tidak memiliki perbedaan perilaku, sehingga penyelidikan sering berlaku untuk kedua runtime. Dengan demikian, terkadang tepat untuk mendiagnosis dan men-debug masalah dalam runtime .NET penuh, karena memiliki banyak pilihan utilitas diagnostik yang tersedia. Meskipun demikian, beberapa informasi hanya dapat dikumpulkan setelah penerbitan, jadi Native AOT juga menyediakan alat diagnostik pascapublikasi.
Dukungan diagnostik AOT asli
Tabel berikut ini meringkas fitur diagnostik yang didukung untuk penyebaran AOT Asli:
| Fitur | Didukung sepenuhnya | Didukung sebagian | Tidak didukung |
|---|---|---|---|
| Pengamatan dan telemetri | Didukung sebagian | ||
| Diagnostik waktu pengembangan | Didukung penuh | ||
| Penelusuran kesalahan asli | Didukung sebagian | ||
| Pembuatan Profil CPU | Didukung sebagian | ||
| Analisis timbunan | Tidak didukung |
Pengamatan dan telemetri
Pada .NET 8, runtime AOT Asli mendukung EventPipe, yang merupakan lapisan dasar yang digunakan oleh banyak pustaka pengelogan dan pelacakan. Anda dapat berinteraksi dengan EventPipe langsung melalui API seperti EventSource.WriteEvent atau Anda dapat menggunakan pustaka yang dibangun di atasnya, seperti OpenTelemetry. Dukungan EventPipe juga memungkinkan alat diagnostik .NET seperti dotnet-trace, dotnet-counters, dan dotnet-monitor untuk bekerja dengan mulus dengan AOT Asli atau aplikasi runtime .NET penuh. EventPipe adalah komponen opsional di Native AOT. Untuk menyertakan dukungan EventPipe, atur EventSourceSupport properti MSBuild ke true.
<PropertyGroup>
<EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>
AOT asli menyediakan dukungan parsial untuk beberapa penyedia peristiwa terkenal. Tidak semua peristiwa runtime didukung di AOT Asli.
Diagnostik waktu pengembangan
Alat .NET CLI (dotnet SDK) dan Visual Studio menawarkan perintah terpisah untuk build dan publish.
build (atau Start di Visual Studio) menggunakan runtime .NET lengkap. Hanya publish membuat aplikasi AOT Asli. Menerbitkan aplikasi Anda sebagai Native AOT menghasilkan aplikasi yang telah dikompilasi ke kode asli. Seperti disebutkan sebelumnya, tidak semua alat diagnostik bekerja dengan mulus dengan aplikasi Native AOT yang diterbitkan di .NET 8. Namun, semua alat diagnostik .NET tersedia untuk pengembang selama tahap pembuatan aplikasi. Sebaiknya kembangkan, debugging, dan uji aplikasi seperti biasa dan publikasikan aplikasi yang berfungsi dengan Native AOT sebagai salah satu langkah terakhir.
Penelusuran kesalahan asli
Saat Anda menjalankan aplikasi selama pengembangan, seperti di dalam Visual Studio, atau dengan dotnet run, , dotnet buildatau dotnet test, aplikasi berjalan pada runtime .NET penuh secara default. Namun, jika PublishAot ada dalam file proyek, perilakunya harus sama antara runtime .NET penuh dan AOT Asli. Karakteristik ini memungkinkan Anda menggunakan mesin debugging terkelola Visual Studio standar untuk pengembangan dan pengujian.
Setelah dipublikasikan, aplikasi AOT asli adalah biner asli sejati. Debugger terkelola tidak akan berfungsi pada mereka. Namun, kompilator AOT Asli menghasilkan file yang dapat dieksekusi sepenuhnya asli yang dapat di-debug oleh debugger asli di platform pilihan Anda (misalnya, WinDbg atau Visual Studio di Windows dan gdb atau lldb pada sistem seperti Unix).
Pengkompilasi AOT Asli menghasilkan informasi tentang nomor baris, jenis, lokal, dan parameter. Debugger asli memungkinkan Anda memeriksa jejak tumpukan dan variabel, melangkah ke atau melalui baris sumber, atau mengatur titik henti baris.
Untuk men-debug pengecualian terkelola, atur titik henti pada RhThrowEx metode , yang dipanggil setiap kali pengecualian terkelola dilemparkan. Pengecualian disimpan dalam register argumen pertama, yaitu rcx pada x64 dan x0 di Arm64. Jika debugger Anda mendukung tampilan objek C++, Anda dapat mentransmisikan register untuk S_P_CoreLib_System_Exception* melihat informasi selengkapnya tentang pengecualian.
Mengumpulkan file cadangan untuk aplikasi Native AOT melibatkan beberapa langkah manual di .NET 8.
Catatan khusus Visual Studio
Anda dapat meluncurkan executable yang dikompilasi AOT Asli di bawah debugger Visual Studio dengan membukanya di Visual Studio IDE. Anda perlu membuka executable itu sendiri di Visual Studio.
Untuk mengatur titik henti yang berhenti setiap kali pengecualian dilemparkan, pilih opsi Titik Henti dari menu Debug > Windows . Di jendela baru, pilih > Baru. Tentukan RhThrowEx sebagai Nama Fungsi dan biarkan opsi Bahasa di Semua Bahasa (jangan pilih C#).
Untuk melihat pengecualian apa yang dilemparkan, mulai debugging (Debug > Mulai Debugging atau F5) dan saat RhThrowEx titik henti tercapai, buka jendela Watch (Debug > Windows > Watch), dan tambahkan ekspresi berikut sebagai salah satu pengamatan:
| Arsitektur | Ekspresi |
|---|---|
| Arsitektur x64 | (S_P_CoreLib_System_Exception*)@rcx |
| Arsitektur Arm64 | (S_P_CoreLib_System_Exception*)@x0 |
Mekanisme ini memanfaatkan fakta bahwa pada saat RhThrowEx dipanggil, register CPU yang disebutkan dalam tabel berisi pengecualian yang dilemparkan. Anda juga dapat menempelkan ekspresi ke Jendela Langsung Visual Studio; sintaksnya sama dengan untuk jam tangan.
Pentingnya file simbol
Saat menerbitkan, pengkompilasi AOT Asli menghasilkan file yang dapat dieksekusi dan simbol. Penelusuran kesalahan asli, dan aktivitas terkait seperti pembuatan profil, memerlukan akses ke file simbol asli. Jika file ini tidak ada, Anda mungkin telah menurunkan atau merusak hasil.
Untuk informasi tentang nama dan lokasi file simbol, lihat Informasi debug asli.
Pembuatan profil CPU
Alat khusus platform seperti PerfView dan Perf dapat digunakan untuk mengumpulkan sampel CPU aplikasi AOT Asli.
Analisis timbunan
Analisis timbunan terkelola saat ini tidak didukung di Native AOT. Alat analisis timbunan seperti alat analisis timbunan dotnet-gcdump, PerfView, dan Visual Studio tidak berfungsi di Native AOT di .NET 8.