Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yerel AOT, tüm tanılama ve izleme özelliklerini tam .NET çalışma zamanıyla paylaşır ancak tümünü paylaşmaz. Kırpma uyumlu uygulamaların davranış farklılıkları olmamalıdır, bu nedenle araştırma genellikle her iki çalışma zamanı için de geçerlidir. Bu nedenle, kullanılabilir tanılama yardımcı programlarından oluşan zengin bir seçkiye sahip olduğundan, bazen tam .NET çalışma zamanındaki sorunları tanılamak ve hatalarını ayıklamak uygundur. Bununla birlikte, bazı bilgiler yalnızca yayımlandıktan sonra toplanabilir, bu nedenle Native AOT yayım sonrası tanılama araçları da sağlar.
Yerel AOT tanılama desteği
Aşağıdaki tabloda Yerel AOT dağıtımları için desteklenen tanılama özellikleri özetlenmiştir:
| Özellik | Tam olarak desteklenir | Kısmen desteklenir | Desteklenmez |
|---|---|---|---|
| Gözlemlenebilirlik ve telemetri | Kısmen desteklenir | ||
| Geliştirme zamanı tanılama | Tam olarak desteklenir | ||
| Yerel hata ayıklama | Kısmen desteklenir | ||
| CPU Profili Oluşturma | Kısmen desteklenir | ||
| Yığın analizi | Desteklenmiyor |
Gözlemlenebilirlik ve telemetri
.NET 8 itibarıyla Yerel AOT çalışma zamanı, birçok günlük ve izleme kitaplığı tarafından kullanılan temel katman olan EventPipe'i destekler. EventPipe ile doğrudan EventSource.WriteEvent gibi API'ler aracılığıyla entegre olabilir veya OpenTelemetry gibi üzerine inşa edilmiş kitaplıkları kullanabilirsiniz. EventPipe desteği ayrıca dotnet-trace, dotnet-counters ve dotnet-monitor gibi .NET tanılama araçlarının Yerel AOT veya tam .NET çalışma zamanı uygulamalarıyla sorunsuz çalışmasını sağlar. EventPipe, Yerel AOT'de isteğe bağlı bir bileşendir. EventPipe desteğini eklemek için MSBuild özelliğini olarak EventSourceSupportayarlayıntrue.
<PropertyGroup>
<EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>
Yerel AOT, bazı iyi bilinen etkinlik sağlayıcıları için kısmi destek sunar. Yerli AOT'de tüm çalışma zamanı olayları desteklenmez.
Geliştirme zamanı tanılaması
.NET CLI araçları (dotnet SDK) ve Visual Studio, build ve publish için ayrı komutlar sunar.
build (veya Start Visual Studio'da) tam .NET çalışma zamanını kullanır. Yalnızca publish Yerel AOT uygulaması oluşturur. Uygulamanızı Yerel AOT olarak yayımlamak, önceden (AOT) yerel koda derlenmiş bir uygulama oluşturur. Daha önce belirtildiği gibi, tüm tanılama araçları .NET 8'de yayımlanan Yerel AOT uygulamalarıyla sorunsuz çalışmaz. Ancak tüm .NET tanılama araçları, uygulama oluşturma aşamasında geliştiriciler tarafından kullanılabilir. Uygulamaları her zamanki gibi geliştirmenizi, hata ayıklamanızı ve test etmenizi ve çalışan uygulamayı yerel AOT ile son adımlardan biri olarak yayımlamanızı öneririz.
Yerel hata ayıklama
Visual Studio içinde veya , dotnet rundotnet buildveya ile dotnet testgibi geliştirme sırasında uygulamanızı çalıştırdığınızda, uygulama varsayılan olarak tam .NET çalışma zamanında çalışır. Ancak, proje dosyasında PublishAot bulunuyorsa, davranış tam .NET çalışma zamanı ile Doğal AOT arasında aynı olmalıdır. Bu özellik, geliştirme ve test için standart Visual Studio yönetilen hata ayıklama altyapısını kullanmanıza olanak tanır.
Yayımlamadan sonra Yerel AOT uygulamaları gerçek yerel ikili dosyalardır. Yönetilen hata ayıklayıcı bunlar üzerinde çalışmaz. Ancak Yerel AOT derleyicisi, yerel hata ayıklayıcıların kendi tercih ettiğiniz platformda hata ayıklayabildiği tam yerel yürütülebilir dosyalar oluşturur (örneğin, Windows'da WinDbg veya Visual Studio, Unix benzeri sistemlerde gdb veya lldb).
Yerel AOT derleyicisi satır numaraları, türler, yerel değerler ve parametreler hakkında bilgi oluşturur. Yerel hata ayıklayıcı, yığın izlemesini ve değişkenlerini incelemenize, kaynak satırlara veya kaynak satırların üzerine geçmenize veya satır kesme noktaları ayarlamanıza olanak tanır.
Yönetilen özel durumların hatalarını ayıklamak için, RhThrowEx yöntemi üzerinde bir kesme noktası belirleyin; bu yöntem, her yönetilen özel durum oluşturulduğunda çağrılır. İstisna, x64 üzerinde rcx ve Arm64 üzerinde x0 olan ilk argüman kaydında saklanır. Hata ayıklayıcınız C++ nesnelerini görüntülemeyi destekliyorsa, özel durum hakkında daha fazla bilgi görmek için yazmacı S_P_CoreLib_System_Exception* olarak çevirebilirsiniz.
Native AOT uygulaması için döküm dosyası toplamak, .NET 8'de bazı manuel adımlar gerektirir.
Visual Studio'ya özgü notlar
Yerel AOT ile derlenmiş yürütülebilir dosyayı Visual Studio IDE'de açarak Visual Studio hata ayıklayıcısı altında başlatabilirsiniz. Yürütülebilir dosyanın kendisini Visual Studio'da açmanız gerekir.
Bir özel durum oluşturulduğunda kesecek bir kesme noktası ayarlamak için Windows hatalarını ayıkla menüsünde Kesme Noktaları>. Yeni pencerede Yeni > İşlev kesme noktası'nı seçin. İşlev Adı olarak belirtin RhThrowEx ve Dil seçeneğini Tüm Diller'de bırakın (C# seçeneğini belirlemeyin).
Hangi özel durumun oluştuğuna bakmak için hata ayıklamayı başlatın (> veya F5) ve kesme noktası geldiğinde İzleme penceresini açın (RhThrowEx) ve aşağıdaki ifadeyi izleyicilerden biri olarak ekleyin:
| Mimarlık | İfade |
|---|---|
| x64 mimarisi | (S_P_CoreLib_System_Exception*)@rcx |
| Arm64 mimarisi | (S_P_CoreLib_System_Exception*)@x0 |
Bu mekanizma, RhThrowEx çağrıldığında, tabloda belirtilen CPU yazmacının atılmış olan istisnayı içerdiği gerçeğinden yararlanır. İfadeyi Visual Studio Anında Penceresine de yapıştırabilirsiniz; söz dizimi saatlerin söz dizimi ile aynıdır.
Sembol dosyasının önemi
Yayımlarken, Yerel AOT derleyicisi hem yürütülebilir dosya hem de sembol dosyası oluşturur. Yerel hata ayıklama ve profil oluşturma gibi ilgili etkinlikler için yerel simge dosyasına erişim gerekir. Bu dosya yoksa, düşük veya bozuk sonuçlara sahip olabilirsiniz.
Sembol dosyasının adı ve konumu hakkında bilgi için bkz . Yerel hata ayıklama bilgileri.
CPU profili oluşturma
PerfView ve Perf gibi platforma özgü araçlar, Yerel AOT uygulamasının CPU örneklerini toplamak için kullanılabilir.
Yığın analizi
Yönetilen yığın analizi şu anda Doğal AOT'de desteklenmiyor. dotnet-gcdump, PerfView ve Visual Studio yığın çözümleme araçları gibi yığın çözümleme araçları .NET 8'de Yerel AOT'de çalışmaz.