Tanılama ve izleme

Yerel AOT, CoreCLR ile tanılama ve izleme özelliklerinin tümünü değil bazılarını paylaşır. CoreCLR'nin zengin tanılama yardımcı programları seçimi nedeniyle, bazen CoreCLR'deki sorunları tanılamak ve hatalarını ayıklamak uygundur. 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. Bununla birlikte, bazı bilgiler yalnızca yayımlandıktan sonra toplanabilir, bu nedenle Yerel AOT yayımlama sonrası tanılama araçları da sağlar.

.NET 8 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ılaması 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 gibi API'ler EventSource.WriteEvent aracılığıyla arabirim oluşturabilir veya OpenTelemetry gibi üstte oluşturulmuş 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 CoreCLR 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 trueayarlayınEventSourceSupport.

<PropertyGroup>
    <EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>

Yerel AOT, bazı iyi bilinen olay sağlayıcıları için kısmi destek sağlar. Yerel AOT'de tüm çalışma zamanı olayları desteklenmez.

Geliştirme zamanı tanılaması

.NET CLI araçları (dotnet SDK) ve Visual Studio ve publishiçin build ayrı komutlar sunar. build (veya Start Visual Studio'da) CoreCLR kullanır. Yalnızca publish Yerel AOT uygulaması oluşturur. Uygulamanızı Yerel AOT olarak yayımlamak, yerel koda derlenmiş önceden (AOT) 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

Uygulamanızı Visual Studio içinde veya , dotnet builddotnet testveya ile dotnet rungibi geliştirme sırasında çalıştırdığınızda, varsayılan olarak CoreCLR üzerinde çalışır. Ancak, proje dosyasında varsa PublishAot , davranış CoreCLR ile Yerel 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 seçtiğiniz platformda hata ayıklayabildiği tam yerel yürütülebilir dosyalar oluşturur (örneğin, Windows'da WinDbg veya Visual Studio ve 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, yönteminde RhThrowEx yönetilen özel durum her oluşturulduğunda çağrılan bir kesme noktası ayarlayın. Özel durum veya x0 kaydında rcx depolanı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 S_P_CoreLib_System_Exception* yazmacı dönüştürebilirsiniz.

Yerel AOT uygulaması için döküm dosyası toplamak için .NET 8'de bazı el ile adımlar gerekir.

Visual Studio'ya özgü notlar

Yerel AOT 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ı seçeneğini belirleyin. 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 (Hata AyıklamaYı > Başlat Hata Ayıklama veya F5), İzleme penceresini açın (Windows > Watch'ta Hata Ayıkla>) ve aşağıdaki ifadeyi aşağıdaki saatlerden biri olarak ekleyin: (S_P_CoreLib_System_Exception*)@rcx. Bu mekanizma, o sırada RhThrowEx çağrılan x64 CPU yazmaç RCX'in atılan özel durumu içermesi gerçeğinden yararlanıyor. İfadeyi 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 Yerel 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.